wayfinder-paths 0.1.2__py3-none-any.whl → 0.1.4__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.
- wayfinder_paths/CONFIG_GUIDE.md +23 -18
- wayfinder_paths/abis/generic/erc20.json +383 -0
- wayfinder_paths/{vaults/adapters → adapters}/balance_adapter/README.md +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/balance_adapter/adapter.py +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/balance_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/balance_adapter/test_adapter.py +12 -6
- wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/README.md +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/adapter.py +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/test_adapter.py +2 -2
- wayfinder_paths/adapters/hyperlend_adapter/__init__.py +7 -0
- wayfinder_paths/{vaults/adapters → adapters}/hyperlend_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/hyperlend_adapter/test_adapter.py +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/README.md +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/test_adapter.py +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/README.md +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/test_adapter.py +2 -2
- wayfinder_paths/{vaults/adapters → adapters}/token_adapter/README.md +1 -1
- wayfinder_paths/adapters/token_adapter/examples.json +26 -0
- wayfinder_paths/{vaults/adapters → adapters}/token_adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/adapters → adapters}/token_adapter/test_adapter.py +1 -1
- wayfinder_paths/config.example.json +3 -1
- wayfinder_paths/core/engine/manifest.py +1 -1
- wayfinder_paths/core/strategies/Strategy.py +3 -3
- wayfinder_paths/core/strategies/descriptors.py +80 -0
- wayfinder_paths/core/utils/evm_helpers.py +39 -0
- wayfinder_paths/policies/enso.py +17 -0
- wayfinder_paths/policies/erc20.py +34 -0
- wayfinder_paths/policies/evm.py +21 -0
- wayfinder_paths/policies/hyper_evm.py +19 -0
- wayfinder_paths/policies/hyperlend.py +12 -0
- wayfinder_paths/policies/hyperliquid.py +30 -0
- wayfinder_paths/policies/moonwell.py +54 -0
- wayfinder_paths/policies/prjx.py +30 -0
- wayfinder_paths/policies/util.py +27 -0
- wayfinder_paths/run_strategy.py +3 -3
- wayfinder_paths/scripts/create_strategy.py +3 -3
- wayfinder_paths/scripts/validate_manifests.py +2 -2
- wayfinder_paths/{vaults/strategies → strategies}/hyperlend_stable_yield_strategy/README.md +4 -3
- wayfinder_paths/{vaults/strategies → strategies}/hyperlend_stable_yield_strategy/manifest.yaml +1 -1
- wayfinder_paths/{vaults/strategies → strategies}/hyperlend_stable_yield_strategy/strategy.py +143 -81
- wayfinder_paths/{vaults/strategies → strategies}/hyperlend_stable_yield_strategy/test_strategy.py +4 -2
- wayfinder_paths/{vaults/strategies → strategies}/stablecoin_yield_strategy/README.md +4 -3
- wayfinder_paths/{vaults/strategies → strategies}/stablecoin_yield_strategy/manifest.yaml +1 -1
- wayfinder_paths/{vaults/strategies → strategies}/stablecoin_yield_strategy/strategy.py +117 -80
- wayfinder_paths/{vaults/strategies → strategies}/stablecoin_yield_strategy/test_strategy.py +2 -2
- wayfinder_paths/{vaults/templates → templates}/adapter/README.md +4 -4
- wayfinder_paths/{vaults/templates → templates}/adapter/manifest.yaml +1 -1
- wayfinder_paths/{vaults/templates → templates}/strategy/README.md +6 -5
- wayfinder_paths/{vaults/templates → templates}/strategy/manifest.yaml +1 -1
- wayfinder_paths/{vaults/templates → templates}/strategy/test_strategy.py +1 -1
- {wayfinder_paths-0.1.2.dist-info → wayfinder_paths-0.1.4.dist-info}/METADATA +101 -23
- wayfinder_paths-0.1.4.dist-info/RECORD +125 -0
- wayfinder_paths/vaults/adapters/hyperlend_adapter/__init__.py +0 -7
- wayfinder_paths/vaults/adapters/token_adapter/examples.json +0 -26
- wayfinder_paths/vaults/strategies/__init__.py +0 -0
- wayfinder_paths-0.1.2.dist-info/RECORD +0 -115
- /wayfinder_paths/{vaults → adapters}/__init__.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/balance_adapter/examples.json +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/__init__.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/brap_adapter/examples.json +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/hyperlend_adapter/adapter.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/__init__.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/adapter.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/ledger_adapter/examples.json +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/__init__.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/adapter.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/pool_adapter/examples.json +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/token_adapter/__init__.py +0 -0
- /wayfinder_paths/{vaults/adapters → adapters}/token_adapter/adapter.py +0 -0
- /wayfinder_paths/{vaults/adapters → strategies}/__init__.py +0 -0
- /wayfinder_paths/{vaults/strategies → strategies}/config.py +0 -0
- /wayfinder_paths/{vaults/strategies → strategies}/hyperlend_stable_yield_strategy/examples.json +0 -0
- /wayfinder_paths/{vaults/strategies → strategies}/stablecoin_yield_strategy/examples.json +0 -0
- /wayfinder_paths/{vaults/templates → templates}/adapter/adapter.py +0 -0
- /wayfinder_paths/{vaults/templates → templates}/adapter/examples.json +0 -0
- /wayfinder_paths/{vaults/templates → templates}/adapter/test_adapter.py +0 -0
- /wayfinder_paths/{vaults/templates → templates}/strategy/examples.json +0 -0
- /wayfinder_paths/{vaults/templates → templates}/strategy/strategy.py +0 -0
- {wayfinder_paths-0.1.2.dist-info → wayfinder_paths-0.1.4.dist-info}/LICENSE +0 -0
- {wayfinder_paths-0.1.2.dist-info → wayfinder_paths-0.1.4.dist-info}/WHEEL +0 -0
|
@@ -8,7 +8,7 @@ This template provides the scaffolding for a new vault strategy. It mirrors the
|
|
|
8
8
|
```
|
|
9
9
|
cp -r wayfinder_paths/vaults/templates/strategy wayfinder_paths/vaults/strategies/my_strategy
|
|
10
10
|
```
|
|
11
|
-
2. Rename the class in `strategy.py` and update `manifest.yaml` so `entrypoint` points to your new module (for example `
|
|
11
|
+
2. Rename the class in `strategy.py` and update `manifest.yaml` so `entrypoint` points to your new module (for example `strategies.my_strategy.strategy.MyStrategy`).
|
|
12
12
|
3. Fill out `examples.json` with sample CLI invocations and `test_strategy.py` with at least one smoke test.
|
|
13
13
|
4. Implement the required strategy methods (`deposit`, `update`, `_status`, optionally override `withdraw`).
|
|
14
14
|
|
|
@@ -49,7 +49,7 @@ Strategies typically:
|
|
|
49
49
|
```python
|
|
50
50
|
from wayfinder_paths.core.services.web3_service import DefaultWeb3Service
|
|
51
51
|
from wayfinder_paths.core.strategies.Strategy import StatusDict, StatusTuple, Strategy
|
|
52
|
-
from wayfinder_paths.
|
|
52
|
+
from wayfinder_paths.adapters.balance_adapter.adapter import BalanceAdapter
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class MyStrategy(Strategy):
|
|
@@ -104,7 +104,7 @@ Your `manifest.yaml` should define:
|
|
|
104
104
|
|
|
105
105
|
```yaml
|
|
106
106
|
schema_version: "0.1"
|
|
107
|
-
entrypoint: "
|
|
107
|
+
entrypoint: "strategies.my_strategy.strategy.MyStrategy"
|
|
108
108
|
permissions:
|
|
109
109
|
policy: "(wallet.id == 'FORMAT_WALLET_ID') && (eth.tx.to == '0x...')"
|
|
110
110
|
adapters:
|
|
@@ -120,7 +120,7 @@ adapters:
|
|
|
120
120
|
|
|
121
121
|
```python
|
|
122
122
|
import pytest
|
|
123
|
-
from wayfinder_paths.
|
|
123
|
+
from wayfinder_paths.strategies.my_strategy.strategy import MyStrategy
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
@pytest.mark.asyncio
|
|
@@ -135,7 +135,8 @@ async def test_status_shape():
|
|
|
135
135
|
```bash
|
|
136
136
|
# Install dependencies & create wallets first
|
|
137
137
|
poetry install
|
|
138
|
-
|
|
138
|
+
# Creates a main wallet (or use 'just create-strategy' which auto-creates wallets)
|
|
139
|
+
poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
139
140
|
|
|
140
141
|
# Copy config and edit credentials
|
|
141
142
|
cp wayfinder_paths/config.example.json config.json
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
schema_version: "0.1"
|
|
2
|
-
entrypoint: "
|
|
2
|
+
entrypoint: "strategies.my_strategy.strategy.MyStrategy"
|
|
3
3
|
name: "my_strategy" # Unique name for this strategy instance (used for wallet lookup)
|
|
4
4
|
permissions:
|
|
5
5
|
policy: "(wallet.id == 'FORMAT_WALLET_ID')"
|
|
@@ -14,7 +14,7 @@ import sys
|
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
|
|
16
16
|
# TODO: Replace MyStrategy with your actual strategy class name
|
|
17
|
-
from wayfinder_paths.
|
|
17
|
+
from wayfinder_paths.strategies.your_strategy.strategy import (
|
|
18
18
|
MyStrategy, # noqa: E402
|
|
19
19
|
)
|
|
20
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wayfinder-paths
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Wayfinder Path: strategies and adapters
|
|
5
5
|
Author: Wayfinder
|
|
6
6
|
Author-email: dev@wayfinder.ai
|
|
@@ -42,8 +42,9 @@ curl -sSL https://install.python-poetry.org | python3 -
|
|
|
42
42
|
poetry install
|
|
43
43
|
|
|
44
44
|
# ⚠️ Generate test wallets FIRST (required!)
|
|
45
|
-
# This creates wallets.json with
|
|
46
|
-
|
|
45
|
+
# This creates wallets.json with a main wallet for local testing
|
|
46
|
+
just create-wallets
|
|
47
|
+
# Or manually: poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
47
48
|
|
|
48
49
|
# Copy and configure
|
|
49
50
|
cp wayfinder_paths/config.example.json config.json
|
|
@@ -167,7 +168,9 @@ cd wayfinder-paths
|
|
|
167
168
|
poetry install
|
|
168
169
|
|
|
169
170
|
# 3. Generate test wallets (required before testing!)
|
|
170
|
-
|
|
171
|
+
# Creates a main wallet (or use 'just create-strategy' which auto-creates wallets)
|
|
172
|
+
just create-wallets
|
|
173
|
+
# Or manually: poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
171
174
|
|
|
172
175
|
# 4. Create a new strategy (recommended - automatically creates wallet)
|
|
173
176
|
just create-strategy "My Strategy Name"
|
|
@@ -230,7 +233,7 @@ Adapter manifests declare the capabilities an adapter provides and the clients i
|
|
|
230
233
|
**Schema:**
|
|
231
234
|
```yaml
|
|
232
235
|
schema_version: "0.1"
|
|
233
|
-
entrypoint: "
|
|
236
|
+
entrypoint: "adapters.my_adapter.adapter.MyAdapter"
|
|
234
237
|
capabilities:
|
|
235
238
|
- "pool.read"
|
|
236
239
|
- "pool.analytics"
|
|
@@ -248,7 +251,7 @@ dependencies:
|
|
|
248
251
|
**Example** (`vaults/adapters/pool_adapter/manifest.yaml`):
|
|
249
252
|
```yaml
|
|
250
253
|
schema_version: "0.1"
|
|
251
|
-
entrypoint: "
|
|
254
|
+
entrypoint: "adapters.pool_adapter.adapter.PoolAdapter"
|
|
252
255
|
capabilities:
|
|
253
256
|
- "pool.read"
|
|
254
257
|
- "pool.analytics"
|
|
@@ -268,7 +271,7 @@ Strategy manifests declare permissions and required adapters with their capabili
|
|
|
268
271
|
**Schema:**
|
|
269
272
|
```yaml
|
|
270
273
|
schema_version: "0.1"
|
|
271
|
-
entrypoint: "
|
|
274
|
+
entrypoint: "strategies.my_strategy.strategy.MyStrategy"
|
|
272
275
|
permissions:
|
|
273
276
|
policy: "(wallet.id == 'FORMAT_WALLET_ID') && (eth.tx.to == '0x...')"
|
|
274
277
|
adapters:
|
|
@@ -290,7 +293,7 @@ adapters:
|
|
|
290
293
|
**Example** (`vaults/strategies/stablecoin_yield_strategy/manifest.yaml`):
|
|
291
294
|
```yaml
|
|
292
295
|
schema_version: "0.1"
|
|
293
|
-
entrypoint: "
|
|
296
|
+
entrypoint: "strategies.stablecoin_yield_strategy.strategy.StablecoinYieldStrategy"
|
|
294
297
|
permissions:
|
|
295
298
|
policy: "(wallet.id == 'FORMAT_WALLET_ID') && ((eth.tx.data[0..10] == '0x095ea7b3' && eth.tx.data[34..74] == 'f75584ef6673ad213a685a1b58cc0330b8ea22cf') || (eth.tx.to == '0xF75584eF6673aD213a685a1B58Cc0330B8eA22Cf'))"
|
|
296
299
|
adapters:
|
|
@@ -328,7 +331,7 @@ The `validate_manifests.py` script performs multi-stage validation:
|
|
|
328
331
|
1. **Schema Validation** (via Pydantic models):
|
|
329
332
|
- Loads YAML file and validates against `AdapterManifest` or `StrategyManifest` schema
|
|
330
333
|
- Checks required fields, types, and basic constraints (e.g., capabilities cannot be empty)
|
|
331
|
-
- Validates entrypoint format (must be full import path like `"
|
|
334
|
+
- Validates entrypoint format (must be full import path like `"adapters.pool_adapter.adapter.PoolAdapter"`)
|
|
332
335
|
|
|
333
336
|
2. **Entrypoint Verification**:
|
|
334
337
|
- **For Adapters**: Imports the entrypoint class and verifies it's a subclass of `BaseAdapter`
|
|
@@ -385,7 +388,7 @@ For backend services and automated systems with higher rate limits:
|
|
|
385
388
|
|
|
386
389
|
**Option A: Pass to Strategy Constructor**
|
|
387
390
|
```python
|
|
388
|
-
from wayfinder_paths.
|
|
391
|
+
from wayfinder_paths.strategies.stablecoin_yield_strategy.strategy import StablecoinYieldStrategy
|
|
389
392
|
|
|
390
393
|
strategy = StablecoinYieldStrategy(
|
|
391
394
|
config={...},
|
|
@@ -411,7 +414,9 @@ export WAYFINDER_API_KEY="sk_live_abc123..."
|
|
|
411
414
|
}
|
|
412
415
|
```
|
|
413
416
|
|
|
414
|
-
**Priority Order:** Constructor parameter > `config.json` > `WAYFINDER_API_KEY` environment variable
|
|
417
|
+
**Priority Order:** Constructor parameter > `config.json` (user.api_key or system.api_key) > `WAYFINDER_API_KEY` environment variable
|
|
418
|
+
|
|
419
|
+
**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.
|
|
415
420
|
|
|
416
421
|
#### 2. Personal Access Authentication (OAuth)
|
|
417
422
|
For standalone SDK users with username/password:
|
|
@@ -431,6 +436,7 @@ For standalone SDK users with username/password:
|
|
|
431
436
|
- When an API key is available, it's used for all API requests (including public endpoints) for rate limiting
|
|
432
437
|
- If no API key is found, the system falls back to OAuth authentication
|
|
433
438
|
- All clients created by adapters automatically inherit the API key discovery mechanism
|
|
439
|
+
- API keys in `config.json` are loaded directly by `WayfinderClient._load_config_credentials()` from `user.api_key` or `system.api_key`, not stored in the `UserConfig` or `SystemConfig` dataclasses
|
|
434
440
|
|
|
435
441
|
See [CONFIG_GUIDE.md](wayfinder_paths/CONFIG_GUIDE.md) for detailed authentication documentation.
|
|
436
442
|
|
|
@@ -472,7 +478,7 @@ Strategies implement trading logic using adapters and the unified client system.
|
|
|
472
478
|
# wayfinder_paths/vaults/strategies/my_strategy/strategy.py
|
|
473
479
|
from wayfinder_paths.core.services.web3_service import DefaultWeb3Service
|
|
474
480
|
from wayfinder_paths.core.strategies.Strategy import StatusDict, StatusTuple, Strategy
|
|
475
|
-
from wayfinder_paths.
|
|
481
|
+
from wayfinder_paths.adapters.balance_adapter.adapter import BalanceAdapter
|
|
476
482
|
|
|
477
483
|
|
|
478
484
|
class MyStrategy(Strategy):
|
|
@@ -546,7 +552,9 @@ Each strategy manifest declares which adapters it needs and which capabilities i
|
|
|
546
552
|
|
|
547
553
|
```bash
|
|
548
554
|
# 1. Generate test wallets (required!)
|
|
549
|
-
|
|
555
|
+
# Creates a main wallet (or use 'just create-strategy' which auto-creates wallets)
|
|
556
|
+
just create-wallets
|
|
557
|
+
# Or manually: poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
550
558
|
|
|
551
559
|
# 2. Run smoke tests
|
|
552
560
|
poetry run pytest -k smoke -v
|
|
@@ -577,7 +585,9 @@ cd wayfinder-paths
|
|
|
577
585
|
poetry install
|
|
578
586
|
|
|
579
587
|
# Generate test wallets (essential!)
|
|
580
|
-
|
|
588
|
+
# Creates a main wallet (or use 'just create-strategy' which auto-creates wallets)
|
|
589
|
+
just create-wallets
|
|
590
|
+
# Or manually: poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
581
591
|
|
|
582
592
|
# Copy and configure
|
|
583
593
|
cp wayfinder_paths/config.example.json config.json
|
|
@@ -598,14 +608,17 @@ poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --de
|
|
|
598
608
|
**Before running any strategies, generate test wallets.** This creates `wallets.json` in the repository root with throwaway wallets for local testing:
|
|
599
609
|
|
|
600
610
|
```bash
|
|
601
|
-
# Essential: Create
|
|
602
|
-
|
|
611
|
+
# Essential: Create main wallet for testing
|
|
612
|
+
just create-wallets
|
|
613
|
+
# Or manually: poetry run python wayfinder_paths/scripts/make_wallets.py -n 1
|
|
603
614
|
```
|
|
604
615
|
|
|
605
616
|
This creates:
|
|
606
|
-
- `
|
|
617
|
+
- `main` wallet - your main wallet for testing (labeled "main" in wallets.json)
|
|
607
618
|
- `wallets.json` - wallet addresses and private keys for local testing
|
|
608
619
|
|
|
620
|
+
**Note:** Strategy-specific wallets are automatically created when you use `just create-strategy "Strategy Name"`. For manual creation, use `just create-wallet "strategy_name"` or `poetry run python wayfinder_paths/scripts/make_wallets.py --label "strategy_name"`.
|
|
621
|
+
|
|
609
622
|
**Important:** These wallets are for testing only. Never use them with real funds or on mainnet.
|
|
610
623
|
|
|
611
624
|
**Per-Strategy Wallets:** Each strategy should have its own dedicated wallet. When you create a new strategy using `just create-strategy`, a wallet is automatically generated with a label matching the strategy directory name. The system automatically uses this wallet when running the strategy. See [CONFIG_GUIDE.md](wayfinder_paths/CONFIG_GUIDE.md) for details.
|
|
@@ -613,14 +626,14 @@ This creates:
|
|
|
613
626
|
Additional options:
|
|
614
627
|
|
|
615
628
|
```bash
|
|
616
|
-
# Add 3 extra
|
|
617
|
-
poetry run python wayfinder_paths/scripts/make_wallets.py
|
|
629
|
+
# Add 3 extra wallets for multi-account testing
|
|
630
|
+
poetry run python wayfinder_paths/scripts/make_wallets.py -n 3
|
|
618
631
|
|
|
619
|
-
#
|
|
620
|
-
poetry run python wayfinder_paths/scripts/make_wallets.py --
|
|
632
|
+
# Create a wallet with a specific label (e.g., for a strategy)
|
|
633
|
+
poetry run python wayfinder_paths/scripts/make_wallets.py --label "my_strategy_name"
|
|
621
634
|
|
|
622
|
-
#
|
|
623
|
-
poetry run python wayfinder_paths/scripts/make_wallets.py
|
|
635
|
+
# Generate keystore files (for geth/web3 compatibility)
|
|
636
|
+
poetry run python wayfinder_paths/scripts/make_wallets.py -n 1 --keystore-password "my-password"
|
|
624
637
|
```
|
|
625
638
|
|
|
626
639
|
### Configuration
|
|
@@ -645,6 +658,65 @@ cp wayfinder_paths/config.example.json config.json
|
|
|
645
658
|
poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --config config.json
|
|
646
659
|
```
|
|
647
660
|
|
|
661
|
+
## 📦 Versioning
|
|
662
|
+
|
|
663
|
+
This package follows [Semantic Versioning](https://semver.org/) (SemVer) and is published to PyPI as a public package.
|
|
664
|
+
|
|
665
|
+
### Version Format: MAJOR.MINOR.PATCH
|
|
666
|
+
|
|
667
|
+
- **MAJOR** (X.0.0): Breaking changes that require code updates
|
|
668
|
+
- **MINOR** (0.X.0): New features, backward compatible
|
|
669
|
+
- **PATCH** (0.0.X): Bug fixes, backward compatible
|
|
670
|
+
|
|
671
|
+
### Version Bumping Rules
|
|
672
|
+
|
|
673
|
+
- **PATCH**: Bug fixes, security patches, documentation updates
|
|
674
|
+
- **MINOR**: New adapters, new strategies, new features (backward compatible)
|
|
675
|
+
- **MAJOR**: Breaking API changes, removed features, incompatible changes
|
|
676
|
+
|
|
677
|
+
### Important Notes
|
|
678
|
+
|
|
679
|
+
- **Versions are immutable**: Once published to PyPI, a version cannot be changed or deleted
|
|
680
|
+
- **Versions must be unique**: Each release must have a new, unique version number
|
|
681
|
+
- **Publishing is restricted**: Only publish from the `main` branch to prevent accidental releases
|
|
682
|
+
|
|
683
|
+
### Publishing Workflow and Order of Operations
|
|
684
|
+
|
|
685
|
+
**Critical**: Changes must follow this strict order:
|
|
686
|
+
|
|
687
|
+
1. **Merge to main**: All changes must be merged to the `main` branch first
|
|
688
|
+
2. **Publish to PyPI**: The new version must be published to PyPI from `main` branch
|
|
689
|
+
3. **Dependent changes**: Only after publishing can dependent changes be merged in other applications
|
|
690
|
+
|
|
691
|
+
**Why this order matters:**
|
|
692
|
+
- Other applications depend on this package from PyPI
|
|
693
|
+
- They cannot merge changes that depend on new versions until those versions are available on PyPI
|
|
694
|
+
- Publishing from `main` ensures the published version matches what's in the repository
|
|
695
|
+
- This prevents dependency resolution failures in downstream applications
|
|
696
|
+
|
|
697
|
+
**Example workflow:**
|
|
698
|
+
```bash
|
|
699
|
+
# 1. Make changes in a feature branch
|
|
700
|
+
git checkout -b feature/new-adapter
|
|
701
|
+
# ... make changes ...
|
|
702
|
+
git commit -m "Add new adapter"
|
|
703
|
+
|
|
704
|
+
# 2. Merge to main
|
|
705
|
+
git checkout main
|
|
706
|
+
git merge feature/new-adapter
|
|
707
|
+
|
|
708
|
+
# 3. Bump version in pyproject.toml (e.g., 0.1.3 → 0.2.0)
|
|
709
|
+
# Edit pyproject.toml: version = "0.2.0"
|
|
710
|
+
git commit -m "Bump version to 0.2.0"
|
|
711
|
+
git push origin main
|
|
712
|
+
|
|
713
|
+
# 4. Publish to PyPI (must be on main branch)
|
|
714
|
+
just publish
|
|
715
|
+
|
|
716
|
+
# 5. Now dependent applications can update their dependencies
|
|
717
|
+
# pip install wayfinder-paths==0.2.0
|
|
718
|
+
```
|
|
719
|
+
|
|
648
720
|
## 📦 Publishing
|
|
649
721
|
|
|
650
722
|
Publish to PyPI:
|
|
@@ -654,6 +726,12 @@ export PUBLISH_TOKEN="your_pypi_token"
|
|
|
654
726
|
just publish
|
|
655
727
|
```
|
|
656
728
|
|
|
729
|
+
**Important:**
|
|
730
|
+
- ⚠️ **Publishing is only allowed from the `main` branch** - the publish command will fail if run from any other branch
|
|
731
|
+
- ⚠️ **Versions must be unique** - ensure the version in `pyproject.toml` has been bumped and is unique
|
|
732
|
+
- ⚠️ **Follow the order of operations** - see [Versioning](#-versioning) section above for the required workflow
|
|
733
|
+
- ⚠️ **Versions are immutable** - once published, a version cannot be changed or deleted from PyPI
|
|
734
|
+
|
|
657
735
|
Install the published package:
|
|
658
736
|
|
|
659
737
|
```bash
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
wayfinder_paths/CONFIG_GUIDE.md,sha256=CrxWCHJRF-bewqJbAt2SpNYLKb7fg_23ObCnb8ea-Sc,13359
|
|
2
|
+
wayfinder_paths/__init__.py,sha256=wx7pz75bPLn2O3G9B1jFzI4As3DAzPbJzefu2BgL1C4,395
|
|
3
|
+
wayfinder_paths/abis/generic/erc20.json,sha256=geyzVzdTNt3u1XHKxi4seszP_GIWIzPTl0FYgiftRnM,9336
|
|
4
|
+
wayfinder_paths/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
wayfinder_paths/adapters/balance_adapter/README.md,sha256=JT_AaoxLKsMYk0tNXDXhhPCEIsDxYe8T8EUZyArelQo,4018
|
|
6
|
+
wayfinder_paths/adapters/balance_adapter/adapter.py,sha256=vLYZdVt3CdzIZNpszxE0Z_vUSmVkdf3zBUoh2l_CDCE,8864
|
|
7
|
+
wayfinder_paths/adapters/balance_adapter/examples.json,sha256=atj9baySDqCVBSkDWR9-4kng8yXEKP0bZ21lz59VYyM,126
|
|
8
|
+
wayfinder_paths/adapters/balance_adapter/manifest.yaml,sha256=vp2VoQJf-TxFxgkTsUJ1AEeeOoImM_QjrGYCmjyEQYI,189
|
|
9
|
+
wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=MzwElYxtdffIJnk9xtWCJml8HG1n8Z0omJY2X9MVmDg,2873
|
|
10
|
+
wayfinder_paths/adapters/brap_adapter/README.md,sha256=jWNinvsetf1Syfsnlf6aLR-jniQYJJkZHMNobFHrZTg,7912
|
|
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=oI1d3d4UzYgBnFjjuRDpY7sHEVPPkXTzlPBi2InfpQE,26437
|
|
13
|
+
wayfinder_paths/adapters/brap_adapter/examples.json,sha256=KWuAklUspd2uvk0s2ey8gczg4nbzhdwxQqzhascyMiQ,5287
|
|
14
|
+
wayfinder_paths/adapters/brap_adapter/manifest.yaml,sha256=bJ8o4j9ZPjfnLxXxHfekoXKUHoBkXmWQ3nokTH1aya4,240
|
|
15
|
+
wayfinder_paths/adapters/brap_adapter/test_adapter.py,sha256=36ixuv11Ql3pWgImmoVuE1EqVpsvT5dToGvN9LjpWpE,10874
|
|
16
|
+
wayfinder_paths/adapters/hyperlend_adapter/__init__.py,sha256=DsWOnEn-Tlu9ZoIoGaFeSqOYI3b4lXGVK3_FTntWpLw,139
|
|
17
|
+
wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=BAjMV-E7E90Ob7NUwjZlR1JS4DA1RME9Usp6X8XQeV4,10218
|
|
18
|
+
wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml,sha256=Ugc0jNf3txAQRGAXlVvTN3Mbdc4-fUMS1yVs0SZcBwI,259
|
|
19
|
+
wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=ZnEiJxHRlcI4ijDfwmL2KEsL6A8dcWDYNhhxCEezWI4,9330
|
|
20
|
+
wayfinder_paths/adapters/ledger_adapter/README.md,sha256=kTOY69dtu3EwzizovApipZJwaNLa7qaqDpuj70j2YYc,4622
|
|
21
|
+
wayfinder_paths/adapters/ledger_adapter/__init__.py,sha256=DK9GShIUiQ57YKSqhCKoS43GCweBxi0lzkUQ9sYVxUA,96
|
|
22
|
+
wayfinder_paths/adapters/ledger_adapter/adapter.py,sha256=VbAMEHXXZSG4ynFVc9jZxiEdswEDKwzsFklHH_JZvyY,9896
|
|
23
|
+
wayfinder_paths/adapters/ledger_adapter/examples.json,sha256=LuinGhBfFxO7mMwKwKJ33PuAVEHHBvl_LZeMrYevbxM,3639
|
|
24
|
+
wayfinder_paths/adapters/ledger_adapter/manifest.yaml,sha256=TkATBnz7Xc5iPzEdiR9wp_9r8DKF7fgAjc16KjWWdTk,259
|
|
25
|
+
wayfinder_paths/adapters/ledger_adapter/test_adapter.py,sha256=Q9DwEK2mkklDvphyEOFyeI8IsF8SD9xcJruETzj4kAM,7243
|
|
26
|
+
wayfinder_paths/adapters/pool_adapter/README.md,sha256=cx9ZNWTCQxg9TlBHUIvvkbap0F-PxuVGjhfY4cZx3xs,6180
|
|
27
|
+
wayfinder_paths/adapters/pool_adapter/__init__.py,sha256=rv56pYzz2Gqiz33uoPJktCQRe3CRt8U9ry5GbjVgK3A,90
|
|
28
|
+
wayfinder_paths/adapters/pool_adapter/adapter.py,sha256=cD-Cq38u4YLj3DKB_UdP7BS4DzDyyAmxAOL6c5-dAHY,10003
|
|
29
|
+
wayfinder_paths/adapters/pool_adapter/examples.json,sha256=hLH74Oy6WlrEvAIOjwqsjpcCDxC-N0efWeLa_-TbntM,3202
|
|
30
|
+
wayfinder_paths/adapters/pool_adapter/manifest.yaml,sha256=z-OQYBsl2RdV6M34RZzqtQTAFHtQod0po_JD_-9ElNM,217
|
|
31
|
+
wayfinder_paths/adapters/pool_adapter/test_adapter.py,sha256=QiEYyLFo0S6gKJuk7j9Md0-mN6yNY5heKDQ_Sm1Yln8,7721
|
|
32
|
+
wayfinder_paths/adapters/token_adapter/README.md,sha256=d2tMJte6HBu62CCYXdjS8GHZXj5f2fU03uZAO6pscBI,2698
|
|
33
|
+
wayfinder_paths/adapters/token_adapter/__init__.py,sha256=nEmxrvffEygn3iKH3cZTNLkhnUUhlUAEtshmrFRAjq8,62
|
|
34
|
+
wayfinder_paths/adapters/token_adapter/adapter.py,sha256=5EAZwO8T2tPjHG83Fm5u848Vm2BSK-uy-y4Thi1JlY8,3348
|
|
35
|
+
wayfinder_paths/adapters/token_adapter/examples.json,sha256=RW-3xazj4wbTPl-AVrzduRH1NCXx8m7-06bRMOUJ-lc,3626
|
|
36
|
+
wayfinder_paths/adapters/token_adapter/manifest.yaml,sha256=KQgbHAUaJ6JYjTlOJ9HGeRxwmICXVV01qRwW8wJPKMM,143
|
|
37
|
+
wayfinder_paths/adapters/token_adapter/test_adapter.py,sha256=xnJ-nglMnCFqYnH9D-xcnIy-pmPZK6_puNZ9hPthIMI,4701
|
|
38
|
+
wayfinder_paths/config.example.json,sha256=gDvS7W-cbaNe2IV7Q72di_PYpCDKODojELaXdd77Gx4,605
|
|
39
|
+
wayfinder_paths/conftest.py,sha256=pqDNijXn9_zmbAdkt_2a18UQLjtsDkNTBJVTgC6H2nA,1136
|
|
40
|
+
wayfinder_paths/core/__init__.py,sha256=1bW2DTK29Buj9alSdkgyLFUUmUgLJse7SffCL4mq2G0,350
|
|
41
|
+
wayfinder_paths/core/adapters/BaseAdapter.py,sha256=zoK6Qv0WRo4NY4dy-1xDI6Dolap1Z0-R8zQtTmXVcSs,1482
|
|
42
|
+
wayfinder_paths/core/adapters/__init__.py,sha256=ZqzkliXm5RjWxYJyJR88XHb3npZFiThk7HoVZe3JF60,108
|
|
43
|
+
wayfinder_paths/core/adapters/base.py,sha256=j10cZ5NwqaAhN2mH_j24tG8r7_7NWtx8F6S7sJ9wOi8,100
|
|
44
|
+
wayfinder_paths/core/clients/AuthClient.py,sha256=scz8GvnabNYAQq_XYDcLP2lf2LZqurQOixA7MMAfbCY,2796
|
|
45
|
+
wayfinder_paths/core/clients/BRAPClient.py,sha256=kRLfjms4adpjCHZKL-1xJ8aCQcHcnzeZLHRQI-qqMcw,3131
|
|
46
|
+
wayfinder_paths/core/clients/ClientManager.py,sha256=DBWwww_xmdX0uIfODgQMBq9zwmJNikrBVw3y5q8xd-Q,9558
|
|
47
|
+
wayfinder_paths/core/clients/HyperlendClient.py,sha256=qu5UOcCMybhpGlXWd7JnZduHJgthXhbNimZY1RMQZMU,5162
|
|
48
|
+
wayfinder_paths/core/clients/LedgerClient.py,sha256=bcOuuxV8FXs1hWX4K4QNigwey6aCrrDjxrK6l29bd4Y,7490
|
|
49
|
+
wayfinder_paths/core/clients/PoolClient.py,sha256=sXyg5cWlGDvSFqGkFaxLHz52626as7_noT5--AwOgeI,3340
|
|
50
|
+
wayfinder_paths/core/clients/SimulationClient.py,sha256=DXLMbg5WxfWMxE87PgIcnrVuuCgxKSoA7VQb1qL4GWo,6035
|
|
51
|
+
wayfinder_paths/core/clients/TokenClient.py,sha256=6-57IF6qP4vLdDUNdPeSW9pP1H753RVrQl7GMhI1MRE,2708
|
|
52
|
+
wayfinder_paths/core/clients/TransactionClient.py,sha256=72CgN3FPTtajljUIbhipICycUJi2MI16XCjbTKH-h14,1595
|
|
53
|
+
wayfinder_paths/core/clients/WalletClient.py,sha256=L2ExCZv4E3Lt9lGA6w-5UBaDGR1XHxWoYLLguhpHSFs,2868
|
|
54
|
+
wayfinder_paths/core/clients/WayfinderClient.py,sha256=RigphxnoVrmG2wxXk_1NBKYxothg68M0fquiYPlp4l4,10152
|
|
55
|
+
wayfinder_paths/core/clients/__init__.py,sha256=oNq6fQW8hUnpkuIZxdbOTLPayJRLA6S-k8e7wqsH_7c,1581
|
|
56
|
+
wayfinder_paths/core/clients/protocols.py,sha256=phg-LEOWcP9bmzZst0pa4ztoD95deKoFHnRsYiKKar0,8024
|
|
57
|
+
wayfinder_paths/core/clients/sdk_example.py,sha256=jZjs-7QjeUZLcPcx7w9EBjBI8XRONIGnr6_gb7jhinA,3157
|
|
58
|
+
wayfinder_paths/core/config.py,sha256=gaN2FcW_Ro6skK7-Qjgm56BZ1wlvKRtj0SHLSHsrnh8,14296
|
|
59
|
+
wayfinder_paths/core/constants/__init__.py,sha256=KH-TtfNBJgp0WfKIxvHnvS521odH8RS3Qhl8cQhr4Ys,663
|
|
60
|
+
wayfinder_paths/core/constants/base.py,sha256=D0FxXe-uVBMLSIhmWNNz62ZLxeef7PRer69jcw9lkaU,671
|
|
61
|
+
wayfinder_paths/core/constants/erc20_abi.py,sha256=3ljIyUl6FesoEa4uprwNo-nF0Q5s73M9WEqXLw6ONI4,3214
|
|
62
|
+
wayfinder_paths/core/constants/hyperlend_abi.py,sha256=nIaqsfMl5-_InYN82pjz0FIKsT-AnNkwz0DIc9VrZSc,4331
|
|
63
|
+
wayfinder_paths/core/engine/VaultJob.py,sha256=ZfYDmIAg4M8NJJcfre2-lygBWdxTMAVX0rIknjmgQTI,6903
|
|
64
|
+
wayfinder_paths/core/engine/__init__.py,sha256=HKwrvsDqdE3myQlKzLRenyxhXmFQzPlNEmkzL64IW0Q,99
|
|
65
|
+
wayfinder_paths/core/engine/manifest.py,sha256=rkrALipqwqR61lZu_lF1jJj1aqJk6ZskuXokcB1g0HI,3146
|
|
66
|
+
wayfinder_paths/core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
wayfinder_paths/core/services/base.py,sha256=EwLYIj90IB0qtAcccLXtuvk5BSkem8tc6t0uUDsWP8k,5443
|
|
68
|
+
wayfinder_paths/core/services/local_evm_txn.py,sha256=B94jSZqgFxCzcl9er6T2ofxpMLRwHBph-oTBwj0M94o,16858
|
|
69
|
+
wayfinder_paths/core/services/local_token_txn.py,sha256=S9RJq2_fm1sqmJmn83vMo69-GQLeCkQ-20rrv0ezU1g,8049
|
|
70
|
+
wayfinder_paths/core/services/web3_service.py,sha256=_8sEpkWzSzp7dQR5OCwScypyOsEv5s2BeuO8TqB_H-w,1558
|
|
71
|
+
wayfinder_paths/core/settings.py,sha256=QSAnZjd7qL6aoQ_s43jeE8RzsTaTBNpf6P1UnWBOnE4,1919
|
|
72
|
+
wayfinder_paths/core/strategies/Strategy.py,sha256=ax0kfWG-QFUs5U9Q50F11diYdw7m2dQ0lKlx69PmWu0,6009
|
|
73
|
+
wayfinder_paths/core/strategies/__init__.py,sha256=2NjvvDw6sIQGUFV4Qo1olXTxUOY3GmCM8Ivz_J1FSmc,157
|
|
74
|
+
wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
|
|
75
|
+
wayfinder_paths/core/strategies/descriptors.py,sha256=yZ9vnaZo5xYUpHfdJTumxYdDkIY8odp2fiezf_v0Cro,1622
|
|
76
|
+
wayfinder_paths/core/utils/__init__.py,sha256=TEylMYHnG37Z3mizSmw28bUm0vyNBFzf0Nc8dB_7l1A,73
|
|
77
|
+
wayfinder_paths/core/utils/evm_helpers.py,sha256=1RYpASX778lGuEJ3CNHgEx_4y0XJGoVgkfOZa_Ut-pM,6419
|
|
78
|
+
wayfinder_paths/core/utils/wallets.py,sha256=tGgVxDW2ZvkvJIb6yow1cirrqhQ67_X9IqxZocBEy2k,2438
|
|
79
|
+
wayfinder_paths/core/wallets/README.md,sha256=dGnDagxlMxp0-v5AT2EwoMJhkG_qq0tatKeCQLl6hcw,3736
|
|
80
|
+
wayfinder_paths/core/wallets/WalletManager.py,sha256=jFrjZVYLXCjwgYMEy2KB9ae2avLVBox7AfowCeFu1bE,1858
|
|
81
|
+
wayfinder_paths/core/wallets/__init__.py,sha256=hIuhy64pJOs_8mAP7Zup28goXbT8qjBeeVYMkbqlyu8,315
|
|
82
|
+
wayfinder_paths/policies/enso.py,sha256=oytco04eeGjiRbZPGFE1YpH4NxvV0tfVM14QmlyzjkY,428
|
|
83
|
+
wayfinder_paths/policies/erc20.py,sha256=cmiG03gz82LRUgwf7BD_yoZ9QTiIvIURL40y48NwaFo,958
|
|
84
|
+
wayfinder_paths/policies/evm.py,sha256=8fJpjAl6XVxr51sVMw_VkWmIaI_lj2T7qrLcR8_sWgs,713
|
|
85
|
+
wayfinder_paths/policies/hyper_evm.py,sha256=wLkrE158rPaDjfU5q-PyRXuQ6KA67VcqWo484UHsLb8,649
|
|
86
|
+
wayfinder_paths/policies/hyperlend.py,sha256=4u0NP80t7rpHlw_nvParUN90sIXypWyXACfE0OPqFys,370
|
|
87
|
+
wayfinder_paths/policies/hyperliquid.py,sha256=hAxNtWdxavwf_a-AnlXMOmEYakkNBkrPTrvprIQqBDQ,796
|
|
88
|
+
wayfinder_paths/policies/moonwell.py,sha256=sKWLbruMKiW7Yh1DhXdVPRe0JBP-nooNybRz0G9PgvA,1605
|
|
89
|
+
wayfinder_paths/policies/prjx.py,sha256=6kfZ6OQFroFHYJl4vSWT-svwwfvoHlS_ZrcHt8nmZMU,743
|
|
90
|
+
wayfinder_paths/policies/util.py,sha256=r8xQLPvE3kU21_LG6VbkFI9sUSYltcsKunryZdHOUDA,912
|
|
91
|
+
wayfinder_paths/run_strategy.py,sha256=7-A8Sn3WfOLovYBAwDIBFSTlZ30QRQriMZTDrLxhtj4,14392
|
|
92
|
+
wayfinder_paths/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
|
+
wayfinder_paths/scripts/create_strategy.py,sha256=rp2kkGXsmcAbOt1eZthV1iZ2yM6wAbjn4R10IATulOw,6275
|
|
94
|
+
wayfinder_paths/scripts/make_wallets.py,sha256=-3c4dbZ83tu-5syZ7ikHBb5BGf6wVBZ4w-ThqT9lO4U,5970
|
|
95
|
+
wayfinder_paths/scripts/validate_manifests.py,sha256=sTJhCVTb8X0SFYozArVbX4AMAEv-0R1Imp4dpHfAuHE,7075
|
|
96
|
+
wayfinder_paths/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
|
+
wayfinder_paths/strategies/config.py,sha256=5dv-8tWwoxH3Sxd9jtiw90shrLipEe3UlU-IYUBfciM,2762
|
|
98
|
+
wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=UB5nDE9lizcmAT6AHCPybRQHstiKURkOu0aXfoBwceI,4582
|
|
99
|
+
wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=i1OZXRmjRYXgmGk-_VqXR1hq7VuP6h40j-PWS1W3j-A,413
|
|
100
|
+
wayfinder_paths/strategies/hyperlend_stable_yield_strategy/manifest.yaml,sha256=__YWl6MEeTBLbNWwUyZjQky0ok1T8B1m8dHPQWtW454,240
|
|
101
|
+
wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=YLEOHBrdefHJegVTf2J8vgoFa9bfFAutM1i4KruFRvg,93129
|
|
102
|
+
wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=F5US_tVG9ikDhwvUXzRRF5nvp7q9ZDGZwgUn3uTjwdU,12184
|
|
103
|
+
wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=TrSJ5SvApcRTIatjHg5ZGog_2ULREP3szYDUwf8T-dY,5179
|
|
104
|
+
wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
|
|
105
|
+
wayfinder_paths/strategies/stablecoin_yield_strategy/manifest.yaml,sha256=xMUNzMYniVjK9iyqbHkxmiqFnpUXYlv5nrEIwYkkba4,747
|
|
106
|
+
wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=AK-oCeRuwQ5CaoSlrHan1TAhyFl81e7pshSd6TRMt-M,70193
|
|
107
|
+
wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=d6C9_p2V9MqehYzrEN6UJNpKSu3-OP9lHlnsRe_3kYQ,13053
|
|
108
|
+
wayfinder_paths/templates/adapter/README.md,sha256=PJKNjPRnW-_jL6s2_O-usL2tQ7tWahYMgXaq_zrDQNk,3564
|
|
109
|
+
wayfinder_paths/templates/adapter/adapter.py,sha256=8wdqcEwqb7XGUxl2gQvGnbFwhPi1h15ZJhB2lgtZieI,814
|
|
110
|
+
wayfinder_paths/templates/adapter/examples.json,sha256=KLHy3AgPIplAaZN0qY2A-HBMa1xXkMhIyusORovTD9w,79
|
|
111
|
+
wayfinder_paths/templates/adapter/manifest.yaml,sha256=Xr46INOnH-R9ambF7GvzhTSZgxW3qPlOtt_04xH0_50,134
|
|
112
|
+
wayfinder_paths/templates/adapter/test_adapter.py,sha256=60wWP0S8n0XxdJ2pQ8Q7wr3epaZzh3G1l9uTRU_2Y88,1516
|
|
113
|
+
wayfinder_paths/templates/strategy/README.md,sha256=JrQH2wLm891mN7k5xHRROh_CW0HtBpTrTa0fOHT99pA,5685
|
|
114
|
+
wayfinder_paths/templates/strategy/examples.json,sha256=s8UdlD5uxLITQrRMCqgiaAP0IE0tdnnLfX-Zn-OChIc,135
|
|
115
|
+
wayfinder_paths/templates/strategy/manifest.yaml,sha256=Q13sIhfE7u0wMwa8oFwMZr_twwVMprMV4c_JEQNhkz8,289
|
|
116
|
+
wayfinder_paths/templates/strategy/strategy.py,sha256=dso2jhVphsdKNd17JPwnFAFzU01-1kHlWrKPAKIKSWw,2024
|
|
117
|
+
wayfinder_paths/templates/strategy/test_strategy.py,sha256=pF2kkNl45uAoOzQKok1uE5tBTMoyZ6smdgPeKzKfOBc,7662
|
|
118
|
+
wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
+
wayfinder_paths/tests/test_smoke_manifest.py,sha256=YjVzHTWys5o6Ae2cUuuJPhk-QgKxT1InDFHLjpouRiY,1267
|
|
120
|
+
wayfinder_paths/tests/test_test_coverage.py,sha256=NfrgC2fW1CQVQrHVK57bHtiVE5WQa3On08k2Wn5CoIw,7948
|
|
121
|
+
wayfinder_paths/tests/test_utils.py,sha256=pxHT0QKFlyJeJo8bFnKXzWcOdi6t8rbJ0JFCBaFCBRQ,2112
|
|
122
|
+
wayfinder_paths-0.1.4.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
|
|
123
|
+
wayfinder_paths-0.1.4.dist-info/METADATA,sha256=F68rVlrHBC8mx31BB1FZzca514DmKCOcHLPcyN9m628,31570
|
|
124
|
+
wayfinder_paths-0.1.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
125
|
+
wayfinder_paths-0.1.4.dist-info/RECORD,,
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"basic_usage": {
|
|
3
|
-
"description": "Basic usage of TokenAdapter to get token information",
|
|
4
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# Get token by address\nsuccess, data = await adapter.get_token_by_address(\"0x1234567890abcdef1234567890abcdef12345678\")\nif success:\n print(f\"Token symbol: {data.get('symbol')}\")\n print(f\"Token name: {data.get('name')}\")\n print(f\"Decimals: {data.get('decimals')}\")\nelse:\n print(f\"Error: {data}\")"
|
|
5
|
-
},
|
|
6
|
-
"get_by_token_id": {
|
|
7
|
-
"description": "Get token information using token ID",
|
|
8
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# Get token by ID\nsuccess, data = await adapter.get_token_by_id(\"token-12345\")\nif success:\n print(f\"Token data: {data}\")\nelse:\n print(f\"Error: {data}\")"
|
|
9
|
-
},
|
|
10
|
-
"flexible_lookup": {
|
|
11
|
-
"description": "Use flexible get_token method that tries both address and token_id",
|
|
12
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# Try both address and token_id\nsuccess, data = await adapter.get_token(\n address=\"0x1234567890abcdef1234567890abcdef12345678\",\n token_id=\"token-12345\"\n)\nif success:\n print(f\"Found token: {data}\")\nelse:\n print(f\"Token not found: {data}\")"
|
|
13
|
-
},
|
|
14
|
-
"error_handling": {
|
|
15
|
-
"description": "Proper error handling for various scenarios",
|
|
16
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# Handle missing parameters\ntry:\n success, data = await adapter.get_token()\n if not success:\n print(f\"Error: {data}\")\nexcept Exception as e:\n print(f\"Unexpected error: {e}\")\n\n# Handle API errors\nsuccess, data = await adapter.get_token_by_address(\"invalid-address\")\nif not success:\n print(f\"API error: {data}\")\nelse:\n print(f\"Token found: {data}\")"
|
|
17
|
-
},
|
|
18
|
-
"health_check": {
|
|
19
|
-
"description": "Check adapter health and connectivity",
|
|
20
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# Check health\nhealth = await adapter.health_check()\nprint(f\"Adapter status: {health['status']}\")\nprint(f\"Connected: {health['connected']}\")\nprint(f\"Adapter type: {health['adapter']}\")\n\nif health['status'] == 'healthy':\n print(\"Adapter is ready to use\")\nelse:\n print(f\"Adapter has issues: {health.get('error', 'Unknown error')}\")"
|
|
21
|
-
},
|
|
22
|
-
"batch_operations": {
|
|
23
|
-
"description": "Perform multiple token lookups efficiently",
|
|
24
|
-
"code": "from vaults.adapters.token_adapter.adapter import TokenAdapter\nimport asyncio\n\n# Initialize adapter (no config needed)\nadapter = TokenAdapter()\n\n# List of token addresses to lookup\ntoken_addresses = [\n \"0x1234567890abcdef1234567890abcdef12345678\",\n \"0xabcdef1234567890abcdef1234567890abcdef12\",\n \"0x9876543210fedcba9876543210fedcba98765432\"\n]\n\n# Batch lookup\ntoken_data = {}\nfor address in token_addresses:\n success, data = await adapter.get_token_by_address(address)\n if success:\n token_data[address] = data\n else:\n print(f\"Failed to get token for {address}: {data}\")\n\nprint(f\"Successfully retrieved {len(token_data)} tokens\")\nfor address, data in token_data.items():\n print(f\"{address}: {data.get('symbol', 'Unknown')} - {data.get('name', 'Unknown')}\")"
|
|
25
|
-
}
|
|
26
|
-
}
|
|
File without changes
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
wayfinder_paths/CONFIG_GUIDE.md,sha256=zUuTfAreyC5QeYxNBcZPNWl4y8LYtcdiJUQVEtkCdRY,12575
|
|
2
|
-
wayfinder_paths/__init__.py,sha256=wx7pz75bPLn2O3G9B1jFzI4As3DAzPbJzefu2BgL1C4,395
|
|
3
|
-
wayfinder_paths/config.example.json,sha256=dIi_Y-9pDX0nFktvBKGazfi-xEuC96lisCmBetJuAas,529
|
|
4
|
-
wayfinder_paths/conftest.py,sha256=pqDNijXn9_zmbAdkt_2a18UQLjtsDkNTBJVTgC6H2nA,1136
|
|
5
|
-
wayfinder_paths/core/__init__.py,sha256=1bW2DTK29Buj9alSdkgyLFUUmUgLJse7SffCL4mq2G0,350
|
|
6
|
-
wayfinder_paths/core/adapters/BaseAdapter.py,sha256=zoK6Qv0WRo4NY4dy-1xDI6Dolap1Z0-R8zQtTmXVcSs,1482
|
|
7
|
-
wayfinder_paths/core/adapters/__init__.py,sha256=ZqzkliXm5RjWxYJyJR88XHb3npZFiThk7HoVZe3JF60,108
|
|
8
|
-
wayfinder_paths/core/adapters/base.py,sha256=j10cZ5NwqaAhN2mH_j24tG8r7_7NWtx8F6S7sJ9wOi8,100
|
|
9
|
-
wayfinder_paths/core/clients/AuthClient.py,sha256=scz8GvnabNYAQq_XYDcLP2lf2LZqurQOixA7MMAfbCY,2796
|
|
10
|
-
wayfinder_paths/core/clients/BRAPClient.py,sha256=kRLfjms4adpjCHZKL-1xJ8aCQcHcnzeZLHRQI-qqMcw,3131
|
|
11
|
-
wayfinder_paths/core/clients/ClientManager.py,sha256=DBWwww_xmdX0uIfODgQMBq9zwmJNikrBVw3y5q8xd-Q,9558
|
|
12
|
-
wayfinder_paths/core/clients/HyperlendClient.py,sha256=qu5UOcCMybhpGlXWd7JnZduHJgthXhbNimZY1RMQZMU,5162
|
|
13
|
-
wayfinder_paths/core/clients/LedgerClient.py,sha256=bcOuuxV8FXs1hWX4K4QNigwey6aCrrDjxrK6l29bd4Y,7490
|
|
14
|
-
wayfinder_paths/core/clients/PoolClient.py,sha256=sXyg5cWlGDvSFqGkFaxLHz52626as7_noT5--AwOgeI,3340
|
|
15
|
-
wayfinder_paths/core/clients/SimulationClient.py,sha256=DXLMbg5WxfWMxE87PgIcnrVuuCgxKSoA7VQb1qL4GWo,6035
|
|
16
|
-
wayfinder_paths/core/clients/TokenClient.py,sha256=6-57IF6qP4vLdDUNdPeSW9pP1H753RVrQl7GMhI1MRE,2708
|
|
17
|
-
wayfinder_paths/core/clients/TransactionClient.py,sha256=72CgN3FPTtajljUIbhipICycUJi2MI16XCjbTKH-h14,1595
|
|
18
|
-
wayfinder_paths/core/clients/WalletClient.py,sha256=L2ExCZv4E3Lt9lGA6w-5UBaDGR1XHxWoYLLguhpHSFs,2868
|
|
19
|
-
wayfinder_paths/core/clients/WayfinderClient.py,sha256=RigphxnoVrmG2wxXk_1NBKYxothg68M0fquiYPlp4l4,10152
|
|
20
|
-
wayfinder_paths/core/clients/__init__.py,sha256=oNq6fQW8hUnpkuIZxdbOTLPayJRLA6S-k8e7wqsH_7c,1581
|
|
21
|
-
wayfinder_paths/core/clients/protocols.py,sha256=phg-LEOWcP9bmzZst0pa4ztoD95deKoFHnRsYiKKar0,8024
|
|
22
|
-
wayfinder_paths/core/clients/sdk_example.py,sha256=jZjs-7QjeUZLcPcx7w9EBjBI8XRONIGnr6_gb7jhinA,3157
|
|
23
|
-
wayfinder_paths/core/config.py,sha256=gaN2FcW_Ro6skK7-Qjgm56BZ1wlvKRtj0SHLSHsrnh8,14296
|
|
24
|
-
wayfinder_paths/core/constants/__init__.py,sha256=KH-TtfNBJgp0WfKIxvHnvS521odH8RS3Qhl8cQhr4Ys,663
|
|
25
|
-
wayfinder_paths/core/constants/base.py,sha256=D0FxXe-uVBMLSIhmWNNz62ZLxeef7PRer69jcw9lkaU,671
|
|
26
|
-
wayfinder_paths/core/constants/erc20_abi.py,sha256=3ljIyUl6FesoEa4uprwNo-nF0Q5s73M9WEqXLw6ONI4,3214
|
|
27
|
-
wayfinder_paths/core/constants/hyperlend_abi.py,sha256=nIaqsfMl5-_InYN82pjz0FIKsT-AnNkwz0DIc9VrZSc,4331
|
|
28
|
-
wayfinder_paths/core/engine/VaultJob.py,sha256=ZfYDmIAg4M8NJJcfre2-lygBWdxTMAVX0rIknjmgQTI,6903
|
|
29
|
-
wayfinder_paths/core/engine/__init__.py,sha256=HKwrvsDqdE3myQlKzLRenyxhXmFQzPlNEmkzL64IW0Q,99
|
|
30
|
-
wayfinder_paths/core/engine/manifest.py,sha256=O0LT9qFdHu1VcINq1FWbeGxJJw3yrsDcPdTAv0L4X78,3153
|
|
31
|
-
wayfinder_paths/core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
-
wayfinder_paths/core/services/base.py,sha256=EwLYIj90IB0qtAcccLXtuvk5BSkem8tc6t0uUDsWP8k,5443
|
|
33
|
-
wayfinder_paths/core/services/local_evm_txn.py,sha256=B94jSZqgFxCzcl9er6T2ofxpMLRwHBph-oTBwj0M94o,16858
|
|
34
|
-
wayfinder_paths/core/services/local_token_txn.py,sha256=S9RJq2_fm1sqmJmn83vMo69-GQLeCkQ-20rrv0ezU1g,8049
|
|
35
|
-
wayfinder_paths/core/services/web3_service.py,sha256=_8sEpkWzSzp7dQR5OCwScypyOsEv5s2BeuO8TqB_H-w,1558
|
|
36
|
-
wayfinder_paths/core/settings.py,sha256=QSAnZjd7qL6aoQ_s43jeE8RzsTaTBNpf6P1UnWBOnE4,1919
|
|
37
|
-
wayfinder_paths/core/strategies/Strategy.py,sha256=Tv1Wmlk9QDr1OJTCix5abVA8ypX7eNpeYwRnzI6_RKc,5950
|
|
38
|
-
wayfinder_paths/core/strategies/__init__.py,sha256=2NjvvDw6sIQGUFV4Qo1olXTxUOY3GmCM8Ivz_J1FSmc,157
|
|
39
|
-
wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
|
|
40
|
-
wayfinder_paths/core/utils/__init__.py,sha256=TEylMYHnG37Z3mizSmw28bUm0vyNBFzf0Nc8dB_7l1A,73
|
|
41
|
-
wayfinder_paths/core/utils/evm_helpers.py,sha256=ijcuNpclAgDbjNNHS1_7LVMOVqqs22Lwgj9KHzulmck,5131
|
|
42
|
-
wayfinder_paths/core/utils/wallets.py,sha256=tGgVxDW2ZvkvJIb6yow1cirrqhQ67_X9IqxZocBEy2k,2438
|
|
43
|
-
wayfinder_paths/core/wallets/README.md,sha256=dGnDagxlMxp0-v5AT2EwoMJhkG_qq0tatKeCQLl6hcw,3736
|
|
44
|
-
wayfinder_paths/core/wallets/WalletManager.py,sha256=jFrjZVYLXCjwgYMEy2KB9ae2avLVBox7AfowCeFu1bE,1858
|
|
45
|
-
wayfinder_paths/core/wallets/__init__.py,sha256=hIuhy64pJOs_8mAP7Zup28goXbT8qjBeeVYMkbqlyu8,315
|
|
46
|
-
wayfinder_paths/run_strategy.py,sha256=BE9BqsPe1fEW4O2ZxwRd_kukD5hLw_gIExRBEf8sucY,14421
|
|
47
|
-
wayfinder_paths/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
-
wayfinder_paths/scripts/create_strategy.py,sha256=v4JLXMwXyMbHu8aEeLTQBjT5MErkrVRUG-NxDHM5dKQ,6304
|
|
49
|
-
wayfinder_paths/scripts/make_wallets.py,sha256=-3c4dbZ83tu-5syZ7ikHBb5BGf6wVBZ4w-ThqT9lO4U,5970
|
|
50
|
-
wayfinder_paths/scripts/validate_manifests.py,sha256=v95Qj6JUGOPd3G9GOHLmHYLAxcmxhvLfRB8uUImx1yA,7097
|
|
51
|
-
wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
-
wayfinder_paths/tests/test_smoke_manifest.py,sha256=YjVzHTWys5o6Ae2cUuuJPhk-QgKxT1InDFHLjpouRiY,1267
|
|
53
|
-
wayfinder_paths/tests/test_test_coverage.py,sha256=NfrgC2fW1CQVQrHVK57bHtiVE5WQa3On08k2Wn5CoIw,7948
|
|
54
|
-
wayfinder_paths/tests/test_utils.py,sha256=pxHT0QKFlyJeJo8bFnKXzWcOdi6t8rbJ0JFCBaFCBRQ,2112
|
|
55
|
-
wayfinder_paths/vaults/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
wayfinder_paths/vaults/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
-
wayfinder_paths/vaults/adapters/balance_adapter/README.md,sha256=crdXxadLRQ7nK1fNXGySyiN56pf-DRR6u5Bi93FVA5s,4032
|
|
58
|
-
wayfinder_paths/vaults/adapters/balance_adapter/adapter.py,sha256=OYLEnS6VhmHEJAv3BJP2GvqP0ybeNlAk7rgkZw9iOIM,8878
|
|
59
|
-
wayfinder_paths/vaults/adapters/balance_adapter/examples.json,sha256=atj9baySDqCVBSkDWR9-4kng8yXEKP0bZ21lz59VYyM,126
|
|
60
|
-
wayfinder_paths/vaults/adapters/balance_adapter/manifest.yaml,sha256=PIh68YwQ90T5Hwi4v4ASghG4QH26VVURrZHJBGJy2eM,196
|
|
61
|
-
wayfinder_paths/vaults/adapters/balance_adapter/test_adapter.py,sha256=qWcg_hLnrhMYR5bmIA1r3hvVCF66WI0KyJ5JA8Ua9hc,2711
|
|
62
|
-
wayfinder_paths/vaults/adapters/brap_adapter/README.md,sha256=8ApfIwUCBwVJDscIBJqxzkEi5ZfCpPvoRsGuJGG8DW4,7919
|
|
63
|
-
wayfinder_paths/vaults/adapters/brap_adapter/__init__.py,sha256=jpqxZ-Bv_8kBo-lhgO_QCWaVZNq_WwlkNBHD4RsqOJg,90
|
|
64
|
-
wayfinder_paths/vaults/adapters/brap_adapter/adapter.py,sha256=pVur47d5RVW_r9JDxAsaweA7d_0M_pUK5lZHmu0dI9U,26451
|
|
65
|
-
wayfinder_paths/vaults/adapters/brap_adapter/examples.json,sha256=KWuAklUspd2uvk0s2ey8gczg4nbzhdwxQqzhascyMiQ,5287
|
|
66
|
-
wayfinder_paths/vaults/adapters/brap_adapter/manifest.yaml,sha256=HAY5AF0wMLUV2IdaSz6uU1Eqn5JzD91JZ2mX6jKzKnM,247
|
|
67
|
-
wayfinder_paths/vaults/adapters/brap_adapter/test_adapter.py,sha256=wLlpP4MZqSAz3w0otKh0VvIHf109gwetRZBcSsLhyCs,10888
|
|
68
|
-
wayfinder_paths/vaults/adapters/hyperlend_adapter/__init__.py,sha256=AWx6oZncKm4zf_o9dqUx9ST6-cAaMfLvvz9Rxuy4q_Q,146
|
|
69
|
-
wayfinder_paths/vaults/adapters/hyperlend_adapter/adapter.py,sha256=BAjMV-E7E90Ob7NUwjZlR1JS4DA1RME9Usp6X8XQeV4,10218
|
|
70
|
-
wayfinder_paths/vaults/adapters/hyperlend_adapter/manifest.yaml,sha256=EhSmX22sbSD5Lpr_lmIKfKHjC6oeMBtsGzXjRBx9mxo,266
|
|
71
|
-
wayfinder_paths/vaults/adapters/hyperlend_adapter/test_adapter.py,sha256=wkIqnVK_G_zkB6eIK-UCGGisigldmzmAGs_dzZBTQTs,9344
|
|
72
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/README.md,sha256=0NwaG4hiCBUph9oc3K0vdgUqWxMQVTGUDwoq48VdsyA,4629
|
|
73
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/__init__.py,sha256=DK9GShIUiQ57YKSqhCKoS43GCweBxi0lzkUQ9sYVxUA,96
|
|
74
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/adapter.py,sha256=VbAMEHXXZSG4ynFVc9jZxiEdswEDKwzsFklHH_JZvyY,9896
|
|
75
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/examples.json,sha256=LuinGhBfFxO7mMwKwKJ33PuAVEHHBvl_LZeMrYevbxM,3639
|
|
76
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/manifest.yaml,sha256=G5dewgmbvPKkoH96UpGwIOPvfYX_UNeURbMgfRaB7uA,266
|
|
77
|
-
wayfinder_paths/vaults/adapters/ledger_adapter/test_adapter.py,sha256=bYuhf0G7XiWDnkadu9KOB_niH0aVwMbt8pPElJJT3sY,7257
|
|
78
|
-
wayfinder_paths/vaults/adapters/pool_adapter/README.md,sha256=wUUyE2t4_wQs_N_XxC7bYmhCDBCtWKJhrQjviza3QAY,6187
|
|
79
|
-
wayfinder_paths/vaults/adapters/pool_adapter/__init__.py,sha256=rv56pYzz2Gqiz33uoPJktCQRe3CRt8U9ry5GbjVgK3A,90
|
|
80
|
-
wayfinder_paths/vaults/adapters/pool_adapter/adapter.py,sha256=cD-Cq38u4YLj3DKB_UdP7BS4DzDyyAmxAOL6c5-dAHY,10003
|
|
81
|
-
wayfinder_paths/vaults/adapters/pool_adapter/examples.json,sha256=hLH74Oy6WlrEvAIOjwqsjpcCDxC-N0efWeLa_-TbntM,3202
|
|
82
|
-
wayfinder_paths/vaults/adapters/pool_adapter/manifest.yaml,sha256=MA0IUjrXj8OmNm_Hi0FuWey6SF9UK9WdlI2nqwIMef0,224
|
|
83
|
-
wayfinder_paths/vaults/adapters/pool_adapter/test_adapter.py,sha256=SpVbnwgvfs2kxvjojsaWy05AVwhd-IlMXZWOKPX3mIg,7735
|
|
84
|
-
wayfinder_paths/vaults/adapters/token_adapter/README.md,sha256=HbqAQzvo9GFqLKmwP3HZ_q52iAsANTT8B1MfK9I976c,2705
|
|
85
|
-
wayfinder_paths/vaults/adapters/token_adapter/__init__.py,sha256=nEmxrvffEygn3iKH3cZTNLkhnUUhlUAEtshmrFRAjq8,62
|
|
86
|
-
wayfinder_paths/vaults/adapters/token_adapter/adapter.py,sha256=5EAZwO8T2tPjHG83Fm5u848Vm2BSK-uy-y4Thi1JlY8,3348
|
|
87
|
-
wayfinder_paths/vaults/adapters/token_adapter/examples.json,sha256=BdFP_bCj8lMoLP7fEbva6ijgKFO7_mLQbGfPzu4mxxQ,3669
|
|
88
|
-
wayfinder_paths/vaults/adapters/token_adapter/manifest.yaml,sha256=dbBp-ChTO_ukhFw6Rz-dhtaHvKGRpIIrXBoMj3gFaAY,150
|
|
89
|
-
wayfinder_paths/vaults/adapters/token_adapter/test_adapter.py,sha256=cfU8DJkverb-jjITuo0GXSYu-6CjfpZmmWxmaf4Hn0g,4708
|
|
90
|
-
wayfinder_paths/vaults/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
-
wayfinder_paths/vaults/strategies/config.py,sha256=5dv-8tWwoxH3Sxd9jtiw90shrLipEe3UlU-IYUBfciM,2762
|
|
92
|
-
wayfinder_paths/vaults/strategies/hyperlend_stable_yield_strategy/README.md,sha256=47eJvNCxQ-AAAusS8Je8Aha8CV9h29R-gz6El43tfec,4531
|
|
93
|
-
wayfinder_paths/vaults/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=i1OZXRmjRYXgmGk-_VqXR1hq7VuP6h40j-PWS1W3j-A,413
|
|
94
|
-
wayfinder_paths/vaults/strategies/hyperlend_stable_yield_strategy/manifest.yaml,sha256=WwkbN_GonTKE0m3ef96Hb5ne0GgcHX_a9xWlmeYgkBk,247
|
|
95
|
-
wayfinder_paths/vaults/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=it2RYF3L9R0z-brti6RXSGA7EzxINEUsD2hL6Cbx_v4,90489
|
|
96
|
-
wayfinder_paths/vaults/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=d9K7KWj8qr3QKY8OzafwemwD8sDoCZ9lnN3HZhQtH8E,12170
|
|
97
|
-
wayfinder_paths/vaults/strategies/stablecoin_yield_strategy/README.md,sha256=LsUNFc4g3_XLvvf8aQ0_Oq5KDbpenIpeB2gRejzGaZw,5128
|
|
98
|
-
wayfinder_paths/vaults/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
|
|
99
|
-
wayfinder_paths/vaults/strategies/stablecoin_yield_strategy/manifest.yaml,sha256=_dOfQfAAk3mv-rdDx7yFMdXPQBCSLIzPNiSS01A4dGA,754
|
|
100
|
-
wayfinder_paths/vaults/strategies/stablecoin_yield_strategy/strategy.py,sha256=a-x518ircT6v5O0UtC4oe6yLfQMs2ODyxnisQ_ZiV2c,68503
|
|
101
|
-
wayfinder_paths/vaults/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=Prrqr_UKlRoNw37mmlxTAjd0ecd_tujUhtH5rDy79Gc,13067
|
|
102
|
-
wayfinder_paths/vaults/templates/adapter/README.md,sha256=vKvRaBDz0CFaB3o9FdOknqv2aOPkYjJdH-4G7J888Go,3592
|
|
103
|
-
wayfinder_paths/vaults/templates/adapter/adapter.py,sha256=8wdqcEwqb7XGUxl2gQvGnbFwhPi1h15ZJhB2lgtZieI,814
|
|
104
|
-
wayfinder_paths/vaults/templates/adapter/examples.json,sha256=KLHy3AgPIplAaZN0qY2A-HBMa1xXkMhIyusORovTD9w,79
|
|
105
|
-
wayfinder_paths/vaults/templates/adapter/manifest.yaml,sha256=d9O4k-rWgOxfG3qAA6sqIHyR1ESzyB7kzN4d8I0q7BA,141
|
|
106
|
-
wayfinder_paths/vaults/templates/adapter/test_adapter.py,sha256=60wWP0S8n0XxdJ2pQ8Q7wr3epaZzh3G1l9uTRU_2Y88,1516
|
|
107
|
-
wayfinder_paths/vaults/templates/strategy/README.md,sha256=GVnNhfGPEH3La7vslVKVPGRublsGaOIF7xsBp2LZktg,5643
|
|
108
|
-
wayfinder_paths/vaults/templates/strategy/examples.json,sha256=s8UdlD5uxLITQrRMCqgiaAP0IE0tdnnLfX-Zn-OChIc,135
|
|
109
|
-
wayfinder_paths/vaults/templates/strategy/manifest.yaml,sha256=H62QVPFtKSZ1hW2m7-EQlV7pK47liq16nZ8VbffhTxU,296
|
|
110
|
-
wayfinder_paths/vaults/templates/strategy/strategy.py,sha256=dso2jhVphsdKNd17JPwnFAFzU01-1kHlWrKPAKIKSWw,2024
|
|
111
|
-
wayfinder_paths/vaults/templates/strategy/test_strategy.py,sha256=lkcI4htRcnM1-9sdIIc7K3g1qrvvIvuHDAjyt-7HRw0,7669
|
|
112
|
-
wayfinder_paths-0.1.2.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
|
|
113
|
-
wayfinder_paths-0.1.2.dist-info/METADATA,sha256=rnxEDN-okNSqOaFu0JqqWI2GfEvplQn8HU5ZgUT7wx0,27949
|
|
114
|
-
wayfinder_paths-0.1.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
115
|
-
wayfinder_paths-0.1.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|