wayfinder-paths 0.1.15__py3-none-any.whl → 0.1.16__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (47) hide show
  1. wayfinder_paths/adapters/balance_adapter/README.md +19 -20
  2. wayfinder_paths/adapters/balance_adapter/adapter.py +66 -37
  3. wayfinder_paths/adapters/balance_adapter/test_adapter.py +2 -8
  4. wayfinder_paths/adapters/brap_adapter/README.md +22 -19
  5. wayfinder_paths/adapters/brap_adapter/adapter.py +33 -34
  6. wayfinder_paths/adapters/brap_adapter/test_adapter.py +2 -18
  7. wayfinder_paths/adapters/hyperlend_adapter/adapter.py +40 -56
  8. wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py +1 -8
  9. wayfinder_paths/adapters/moonwell_adapter/README.md +29 -31
  10. wayfinder_paths/adapters/moonwell_adapter/adapter.py +301 -662
  11. wayfinder_paths/adapters/moonwell_adapter/test_adapter.py +275 -179
  12. wayfinder_paths/core/config.py +8 -47
  13. wayfinder_paths/core/constants/base.py +0 -1
  14. wayfinder_paths/core/constants/erc20_abi.py +13 -13
  15. wayfinder_paths/core/strategies/Strategy.py +6 -2
  16. wayfinder_paths/core/utils/erc20_service.py +100 -0
  17. wayfinder_paths/core/utils/evm_helpers.py +1 -1
  18. wayfinder_paths/core/utils/transaction.py +191 -0
  19. wayfinder_paths/core/utils/web3.py +66 -0
  20. wayfinder_paths/run_strategy.py +37 -6
  21. wayfinder_paths/strategies/basis_trading_strategy/strategy.py +200 -224
  22. wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py +128 -151
  23. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md +0 -1
  24. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py +52 -78
  25. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py +0 -12
  26. wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md +0 -1
  27. wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py +39 -64
  28. wayfinder_paths/strategies/stablecoin_yield_strategy/README.md +0 -1
  29. wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py +42 -85
  30. wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py +0 -8
  31. wayfinder_paths/templates/strategy/README.md +1 -5
  32. {wayfinder_paths-0.1.15.dist-info → wayfinder_paths-0.1.16.dist-info}/METADATA +3 -41
  33. {wayfinder_paths-0.1.15.dist-info → wayfinder_paths-0.1.16.dist-info}/RECORD +35 -44
  34. {wayfinder_paths-0.1.15.dist-info → wayfinder_paths-0.1.16.dist-info}/WHEEL +1 -1
  35. wayfinder_paths/core/clients/sdk_example.py +0 -125
  36. wayfinder_paths/core/engine/__init__.py +0 -5
  37. wayfinder_paths/core/services/__init__.py +0 -0
  38. wayfinder_paths/core/services/base.py +0 -131
  39. wayfinder_paths/core/services/local_evm_txn.py +0 -350
  40. wayfinder_paths/core/services/local_token_txn.py +0 -238
  41. wayfinder_paths/core/services/web3_service.py +0 -43
  42. wayfinder_paths/core/wallets/README.md +0 -88
  43. wayfinder_paths/core/wallets/WalletManager.py +0 -56
  44. wayfinder_paths/core/wallets/__init__.py +0 -7
  45. wayfinder_paths/scripts/run_strategy.py +0 -152
  46. wayfinder_paths/strategies/config.py +0 -85
  47. {wayfinder_paths-0.1.15.dist-info → wayfinder_paths-0.1.16.dist-info}/LICENSE +0 -0
@@ -1,17 +1,17 @@
1
1
  wayfinder_paths/__init__.py,sha256=YgOg-PRPT3ROh0zg6hgQyQE-YFkFGw6TM77zDvB4_sE,427
2
2
  wayfinder_paths/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- wayfinder_paths/adapters/balance_adapter/README.md,sha256=VCBvhAzgWayVgRZonwAB0oMIip1iXvRWb0cYSmeDmPI,3789
4
- wayfinder_paths/adapters/balance_adapter/adapter.py,sha256=gNWn27olX-bnw-qrY9wmUFqpEtq4hewvRUUFyQ1j370,9921
3
+ wayfinder_paths/adapters/balance_adapter/README.md,sha256=NXd9NSIz6j10_WL8UMDRJ3LXepiZ0DMfRgd_hmulg9o,3155
4
+ wayfinder_paths/adapters/balance_adapter/adapter.py,sha256=nL29BY12rbCiB3WUgpNHvyMAYZtoxjz6n1CD3AmbFa8,11126
5
5
  wayfinder_paths/adapters/balance_adapter/examples.json,sha256=3R1M4B_VsIy29viAuFT9nQbnQShWl8ZbU-rnSNWUW9U,129
6
- wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=KxCmbo_fMC1oMNS3B1u7uNsEIzoi0kXTjCqsnnBIHac,6287
7
- wayfinder_paths/adapters/brap_adapter/README.md,sha256=eOWIwAPdaBuvPCmT_E4myucUSvgupvvQQKDcptgRluw,7756
6
+ wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=UQArZUMLWC_F9vsXt_cKhwX_4_4SWwOIwEGSFTwlvkQ,6078
7
+ wayfinder_paths/adapters/brap_adapter/README.md,sha256=Yihq35seDSvypW9c6u7IJViDGPTTWs_X3-mfjjc6uRA,7477
8
8
  wayfinder_paths/adapters/brap_adapter/__init__.py,sha256=jpqxZ-Bv_8kBo-lhgO_QCWaVZNq_WwlkNBHD4RsqOJg,90
9
- wayfinder_paths/adapters/brap_adapter/adapter.py,sha256=0x9UAr6p1NlaIPn36SIp2kFQk6g6Di2IT3YOlAdutMw,32638
9
+ wayfinder_paths/adapters/brap_adapter/adapter.py,sha256=1qdE9jfnxkwuIKxeVnn6z50hGtzFeLab_DL8whni4g4,32539
10
10
  wayfinder_paths/adapters/brap_adapter/examples.json,sha256=FGZhNaMCAQ56KhovEGSsV1BHOcMd_QqQBNmCU6m8zfQ,5389
11
- wayfinder_paths/adapters/brap_adapter/test_adapter.py,sha256=XdNMY6nuxkq5xPGor0VXGGZj0vDwsOys5sDgz-co81U,12800
11
+ wayfinder_paths/adapters/brap_adapter/test_adapter.py,sha256=ohaiMPyGxW5faOXjjAHuW5yAdcqx_lRWa3-Tm6Px0U0,12110
12
12
  wayfinder_paths/adapters/hyperlend_adapter/__init__.py,sha256=DsWOnEn-Tlu9ZoIoGaFeSqOYI3b4lXGVK3_FTntWpLw,139
13
- wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=FnxNa44_BRtUbSaaChZUNZ081an0ajxqYfNhQqYYg1M,10765
14
- wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=rCoy8tkHIOUE31xH0zc3non6E58T-GfAInNpac_f2ls,12096
13
+ wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=Zm1be-r6KgUjyGv6SVPzLsEMadBg4KFOkGrCCY4twUg,9940
14
+ wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=UEKGh-cRMhuc7k1tClLu8wuh6oQ4KV8ViczUa62qibk,11811
15
15
  wayfinder_paths/adapters/hyperliquid_adapter/__init__.py,sha256=QpA258RzVbxzsha86HQduAuNVG0g0qvsI5OcZunQ8DQ,467
16
16
  wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=Z5Gl9M9wk7PVUIyP_i2oAMegmCTbVFd48Zp57DURh6M,34510
17
17
  wayfinder_paths/adapters/hyperliquid_adapter/executor.py,sha256=ix1FmRO6DPiPk0BwGy4zrCP5IfKzzMSQNhnOmIewfGA,18977
@@ -26,10 +26,10 @@ wayfinder_paths/adapters/ledger_adapter/__init__.py,sha256=DK9GShIUiQ57YKSqhCKoS
26
26
  wayfinder_paths/adapters/ledger_adapter/adapter.py,sha256=6Fjxltvn9iXp_-CZtN7lDz1Xt0lWaNQX2drx6lgeryw,10260
27
27
  wayfinder_paths/adapters/ledger_adapter/examples.json,sha256=DdqTSe4vnBrfIycQVQQ_JZom7fBGHbL7MR4ppK9ljCY,3936
28
28
  wayfinder_paths/adapters/ledger_adapter/test_adapter.py,sha256=9q38ublf4mxc8c8K5Rttb8JevljHNz7urEab6czWPpg,7422
29
- wayfinder_paths/adapters/moonwell_adapter/README.md,sha256=PyQllVXgW0aUUoWhAZ5phLPAxtR9A5GkwesnZznckV8,5465
29
+ wayfinder_paths/adapters/moonwell_adapter/README.md,sha256=6vHLZTJBeH1hOkx0T477laZVTlqmFqRCrf3aBheH7EM,6119
30
30
  wayfinder_paths/adapters/moonwell_adapter/__init__.py,sha256=Gf6AM4BylxxPenUQ_cveUg70QcB9i61SIYaCsXMSjXw,135
31
- wayfinder_paths/adapters/moonwell_adapter/adapter.py,sha256=m3RGcjVdPZk-2csd-6jzFnplXX69jslDQjRUZM9BwUw,57712
32
- wayfinder_paths/adapters/moonwell_adapter/test_adapter.py,sha256=rN8j7zQJCxBdzVDk38rablNmpM4JaU91odKModAjmMA,23336
31
+ wayfinder_paths/adapters/moonwell_adapter/adapter.py,sha256=Fsao8ggTmrDJRnQKyov2C7HJb3ucXhVQx9iq2-yIPGM,45081
32
+ wayfinder_paths/adapters/moonwell_adapter/test_adapter.py,sha256=L3gBOaiAm9l0UDokTTeB_Ztq2XvWZta27jTG5tm2h8Q,25661
33
33
  wayfinder_paths/adapters/pool_adapter/README.md,sha256=cBeWz8UzOOIKCkyBUDGTujR1vZNPyhgqKO2HNgq0j3I,2470
34
34
  wayfinder_paths/adapters/pool_adapter/__init__.py,sha256=rv56pYzz2Gqiz33uoPJktCQRe3CRt8U9ry5GbjVgK3A,90
35
35
  wayfinder_paths/adapters/pool_adapter/adapter.py,sha256=zHYCcCjum3jJpG4BZnTJ8YuOyI9ZJlSN5r8TMO4KCDM,1806
@@ -60,31 +60,24 @@ wayfinder_paths/core/clients/WalletClient.py,sha256=efvdJlS1fZfvNBU_hXn63mOKoETB
60
60
  wayfinder_paths/core/clients/WayfinderClient.py,sha256=gl-YHTYDa5GStg5O2xETiL4dAaCLphRos-btB1rQzVE,4319
61
61
  wayfinder_paths/core/clients/__init__.py,sha256=2xpZ4tBYkK0QjpBI88ZB4t4esfIc-enm0LqHdRo479M,1173
62
62
  wayfinder_paths/core/clients/protocols.py,sha256=Z0vvce55wfXrSXfuO0Y-s9EfT9zvwUier4-XhwPZSTs,7984
63
- wayfinder_paths/core/clients/sdk_example.py,sha256=SETyEJ_vw7pJcZVMxBMSjJk9Ag3levyn4WrpDueai_A,3589
64
- wayfinder_paths/core/config.py,sha256=ADdrYAapSCwpV4ljSziBmxZV2Z2ORsu8ku-_MptSjjc,9060
63
+ wayfinder_paths/core/config.py,sha256=hcmK0o_FPuAqQvPCOS_OHwRsC8o6i8ftW13dvAN1Hck,7538
65
64
  wayfinder_paths/core/constants/__init__.py,sha256=upAVwHDgMXJ3DWaAuXo52UZktS8NZ17s5XwVH0qxgzg,591
66
- wayfinder_paths/core/constants/base.py,sha256=BYQAD72XrsY6WRrOMIlUOpXLVANS7EYaS5Ell4Nj1H4,1551
67
- wayfinder_paths/core/constants/erc20_abi.py,sha256=cgqNPvuuJcNBRgcGZrDmm7dIsILWMf_14C5I0sUL_yQ,2898
65
+ wayfinder_paths/core/constants/base.py,sha256=mJHZWZ9g9loIV0RVVJNRAM0wUid4vW2ql1bn-qAco48,1481
66
+ wayfinder_paths/core/constants/erc20_abi.py,sha256=SQD4aNiw_xhb-8NxsnAfUAx1LeG9cIaBbCVrtU_5Z68,2885
68
67
  wayfinder_paths/core/constants/hyperlend_abi.py,sha256=nIaqsfMl5-_InYN82pjz0FIKsT-AnNkwz0DIc9VrZSc,4331
69
68
  wayfinder_paths/core/constants/moonwell_abi.py,sha256=ALb-kKdfF9aUtEHR8OlqvA-3zJ48N66RvVptTJyCfe4,13135
70
69
  wayfinder_paths/core/engine/StrategyJob.py,sha256=zkYo8TmHdj1Hj8cHMmeLgyWJzO7Vy_onF7I0hq_H_2k,5355
71
- wayfinder_paths/core/engine/__init__.py,sha256=WZ2KWnmOZnBocYrqdwq6EUHp6lmTyrKyXgHSHyQswnU,108
72
- wayfinder_paths/core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- wayfinder_paths/core/services/base.py,sha256=xnedv_dOh5sjJkpFzkgPab1ILSzJeHN_A19q54FywHk,4128
74
- wayfinder_paths/core/services/local_evm_txn.py,sha256=hOVbCKtDJmcYlFdb2OxGjkfdmOd4TV6nj6m2b7lAneQ,13459
75
- wayfinder_paths/core/services/local_token_txn.py,sha256=R7IHcvM4hyMxY17AjYAelVZm_kztkOyjZtg3KpCJzTY,8327
76
70
  wayfinder_paths/core/services/test_local_evm_txn.py,sha256=tmP3pt4QBihA6T3PgCSd8hjBkVh4ImNtKGFiFKOkWWA,4829
77
- wayfinder_paths/core/services/web3_service.py,sha256=7iR7bfqfUQCQcdfEWVGqy04PZBtZTuzCDpfLt1a-4OI,1485
78
- wayfinder_paths/core/strategies/Strategy.py,sha256=Y6UidZ_1LVD_RSlbr9trySCZ4u9Sps4667sc0RXGVQw,9707
71
+ wayfinder_paths/core/strategies/Strategy.py,sha256=WTO8KLieMufdCEUjwT5qWmpnz6kA3Ris-O0Skr2OusI,9973
79
72
  wayfinder_paths/core/strategies/__init__.py,sha256=2NjvvDw6sIQGUFV4Qo1olXTxUOY3GmCM8Ivz_J1FSmc,157
80
73
  wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
81
74
  wayfinder_paths/core/strategies/descriptors.py,sha256=2Olef0VWols1CWb-TWcb5pil2rztC0jP6F_Trpv2hIw,1958
82
75
  wayfinder_paths/core/utils/__init__.py,sha256=TEylMYHnG37Z3mizSmw28bUm0vyNBFzf0Nc8dB_7l1A,73
83
- wayfinder_paths/core/utils/evm_helpers.py,sha256=QvVBgjVrdtblzgHSmJMXPeq6UALgvZxXDuv47OKh5KU,5440
76
+ wayfinder_paths/core/utils/erc20_service.py,sha256=MM2nE1iirPdqpohzvmbv50tFsu03LzAer7cmNWHjYQQ,3422
77
+ wayfinder_paths/core/utils/evm_helpers.py,sha256=ml6f2oMRv_YWFoiPxsoZYUSqM-IOkp4IbTrpfFHn-fU,5400
78
+ wayfinder_paths/core/utils/transaction.py,sha256=JDeSOHw7YxTMsYmMmCXk28nIdmH9FQ99b8F0fw0fYl4,6914
84
79
  wayfinder_paths/core/utils/wallets.py,sha256=ccCQ128lDShO265AFMOCdijzPLucWe-Neg5wjLrOsnk,1948
85
- wayfinder_paths/core/wallets/README.md,sha256=ks3tqO3I69PiOXp4hXfZ7ayupvfS0kB8PW3fBR2bDNA,3700
86
- wayfinder_paths/core/wallets/WalletManager.py,sha256=sptj0Dya9iM87BDzUktrYM_Mw33xyVJNrRUTVfBjHGw,1870
87
- wayfinder_paths/core/wallets/__init__.py,sha256=hIuhy64pJOs_8mAP7Zup28goXbT8qjBeeVYMkbqlyu8,315
80
+ wayfinder_paths/core/utils/web3.py,sha256=UuTZ102CW9KNYgupwN1rm7WrqEgi8xOirUi1OOix7kI,1903
88
81
  wayfinder_paths/policies/enso.py,sha256=oytco04eeGjiRbZPGFE1YpH4NxvV0tfVM14QmlyzjkY,428
89
82
  wayfinder_paths/policies/erc20.py,sha256=K5PQCUivBrU2nYmIdsIARzRiFy36Rijver-RJnaxNT8,960
90
83
  wayfinder_paths/policies/evm.py,sha256=8fJpjAl6XVxr51sVMw_VkWmIaI_lj2T7qrLcR8_sWgs,713
@@ -94,38 +87,36 @@ wayfinder_paths/policies/hyperliquid.py,sha256=hAxNtWdxavwf_a-AnlXMOmEYakkNBkrPT
94
87
  wayfinder_paths/policies/moonwell.py,sha256=sKWLbruMKiW7Yh1DhXdVPRe0JBP-nooNybRz0G9PgvA,1605
95
88
  wayfinder_paths/policies/prjx.py,sha256=6kfZ6OQFroFHYJl4vSWT-svwwfvoHlS_ZrcHt8nmZMU,743
96
89
  wayfinder_paths/policies/util.py,sha256=r8xQLPvE3kU21_LG6VbkFI9sUSYltcsKunryZdHOUDA,912
97
- wayfinder_paths/run_strategy.py,sha256=I6K7ILOniVtB_0n8oJTkmdfB8qdsNWgEyfrKP5tZYK8,11672
90
+ wayfinder_paths/run_strategy.py,sha256=vs54IVLzWpdzRFb8siMcvvlBfX80StmDp8ExaulivVU,13324
98
91
  wayfinder_paths/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
92
  wayfinder_paths/scripts/create_strategy.py,sha256=WQQLBhClfjyLxEaKubQkBqBpSOFESnk1m6WTau9LylQ,5352
100
93
  wayfinder_paths/scripts/make_wallets.py,sha256=RuCa9uYAsOzv8TyFdeOH89-SPJVGXwl5RuAqfJesLOk,5237
101
- wayfinder_paths/scripts/run_strategy.py,sha256=xXa9Ch7mf1UXSO2UqyUZ6_IJG0TOjoYPyTzCU1U56TM,4450
102
94
  wayfinder_paths/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
95
  wayfinder_paths/strategies/basis_trading_strategy/README.md,sha256=rTUXQ2owEoPmXlfHcJfRFCwcQxlU3a4hOJGN5kaWWQ0,7176
104
96
  wayfinder_paths/strategies/basis_trading_strategy/__init__.py,sha256=kVcehFjBUtoi5xzSHI56jtDghsy0nYl6XIE6BI1l6aI,79
105
97
  wayfinder_paths/strategies/basis_trading_strategy/constants.py,sha256=PJ1WtSALxiuW1FXx-BF30ciFISEhO5VBfrSZyfhPuz0,45
106
98
  wayfinder_paths/strategies/basis_trading_strategy/examples.json,sha256=q2wlAH8Gr-LUJeamKzWL1EtChL3TBWe0HQ4_P-VCdqQ,429
107
99
  wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py,sha256=jjXv-w-uXdkw3-eSUgMmWCE7cPCRrkhyD4_TQjOnRO0,38640
108
- wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=M0t-EyqM8iuR69PItBfaEgv1myhqm4TjTwvxOkQme7Q,163957
109
- wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=0BHLaUda3hnEjyu6pR45ER_Yjd4UL91-nKhgYcleTAE,40101
100
+ wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=9lHl20065LQSc2GSbyDN0z4Y_1fHVpdn7X6GfEwFKtY,162891
101
+ wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=NDqJIA47IwXAksxyWIcFGqFv67O628Q79k3gSj0SNtM,38281
110
102
  wayfinder_paths/strategies/basis_trading_strategy/types.py,sha256=rlbouTUOVPLfGPzMbsf-fUmMcn0R_OsG-IdfiBJmmqI,845
111
- wayfinder_paths/strategies/config.py,sha256=5dv-8tWwoxH3Sxd9jtiw90shrLipEe3UlU-IYUBfciM,2762
112
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=3dOmUCjs_zu4TgPhis0WG-U1XP_dl9aEGi49EkW_-jw,4180
103
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=20gA0Ae37tuILWdUoODcVLFTR73S7hTGUv4lAZhOvzA,4073
113
104
  wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=GbVo2p6QiG6M7Ma5s671lw8G9JwnMl1h0n9mrtt-ZS8,164
114
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=rHrTWb0oozvXd9FaBu8MQryW16cQhA2m6EudM4aEd1Q,95263
115
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=YFyfls9HjlB5DbzcPWa7_OFbAJrW7i_HWhGtA6_YXPo,17067
116
- wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md,sha256=93JLdakJO-URxnLuggvXEZrCjf-6kFKnZt4J04i_3qI,4854
105
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=rWwm_Zd9__XCF6Rl1qd2SMEXmxbDq9v2GeP475DQxf8,94074
106
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=82VvObTwpmsnTlh_jMwLXHMQFDEH1qgbee4xQoDEzXo,16429
107
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md,sha256=Rfx6qeSYL9ttn7Wxi-_LiM7qqleoDByfhLaqLiGSKAw,4773
117
108
  wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/examples.json,sha256=kgNRdZcqne8XTm-Y8Hv1a1pdajRQsey4Qhd5La-iWss,164
118
- wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py,sha256=q-BuaLzY-vtXXqIFb0cUQi7tSWYFMwrJBcnP7o6yGPc,162764
109
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py,sha256=98P6qzaiqkeVU8nkeCwRaJRXn2SiQ_OFLbynWanfHFc,161871
119
110
  wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/test_strategy.py,sha256=f1w6jYZlfg0pdZDLmD01PNXENph8MIb03_GgPRNEXZ4,38348
120
- wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=ZiHXmnyvh85sC-X1a_HzUcUZRvNEjwbmrSQkRIK8OQQ,4980
111
+ wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=LOWLL-Z3DX0WTitZYkoVXjzVzGtqR9dCAy2L0OK8qqM,4878
121
112
  wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
122
- wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=vJ7FdHxhsDxaQhHmLZ6788gpLsGsVNt6n3jjtvQ7qEI,79937
123
- wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=gEw7kEeC9-TPTbsbAjhalsNQEcAdwelh_w8fT0i_bW0,21085
113
+ wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=xe8s_Qi7poeSQvQKIBU2aUoERtQaDZlndvzZpd399Fc,78092
114
+ wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=Rqy28eTEuvQcB0dJv-bUg73h2h_KqxUr3wEKkaN-gnw,20630
124
115
  wayfinder_paths/templates/adapter/README.md,sha256=saBsgYOjdI-EMZIjc8wO0CYm4KgsC7zN7I_ucH6iNeg,2886
125
116
  wayfinder_paths/templates/adapter/adapter.py,sha256=UGPvD8SNcrEtYQXRTUxvK9WZ9Bzx1Xwb8sr9zSbqnuc,763
126
117
  wayfinder_paths/templates/adapter/examples.json,sha256=KLHy3AgPIplAaZN0qY2A-HBMa1xXkMhIyusORovTD9w,79
127
118
  wayfinder_paths/templates/adapter/test_adapter.py,sha256=PeG9ZZwx-cWXCDUKxrvj1cR8ljo9aXrKANZuz2hFAhk,1510
128
- wayfinder_paths/templates/strategy/README.md,sha256=721aGfPsKmQBIzwBcEav2cYWMRKNDnvj1ImKJSmH2MM,4963
119
+ wayfinder_paths/templates/strategy/README.md,sha256=LMSE7Zo7IptU7MDMkIH76kkCOhP5FLeE3DxCh4Vnhco,4640
129
120
  wayfinder_paths/templates/strategy/examples.json,sha256=s8UdlD5uxLITQrRMCqgiaAP0IE0tdnnLfX-Zn-OChIc,135
130
121
  wayfinder_paths/templates/strategy/strategy.py,sha256=dso2jhVphsdKNd17JPwnFAFzU01-1kHlWrKPAKIKSWw,2024
131
122
  wayfinder_paths/templates/strategy/test_strategy.py,sha256=TWw8NHOLy_dKgffHTK43N5He5gJ-oNUFi5QbSQM3l1k,7591
@@ -133,7 +124,7 @@ wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
133
124
  wayfinder_paths/tests/test_smoke_manifest.py,sha256=kTcIa4qikcspVh2ohQIk0aHUdIvBvcQBfNbm3PNiVvg,1636
134
125
  wayfinder_paths/tests/test_test_coverage.py,sha256=9NrZeVmP02D4W7Qc0XjciC05bhvdTCVibYjTGfa_GQk,7893
135
126
  wayfinder_paths/tests/test_utils.py,sha256=pxHT0QKFlyJeJo8bFnKXzWcOdi6t8rbJ0JFCBaFCBRQ,2112
136
- wayfinder_paths-0.1.15.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
137
- wayfinder_paths-0.1.15.dist-info/METADATA,sha256=klcqgBmJs6xKwmJQfuI63h0wZLUzErhMESrrF0t8Fx8,24314
138
- wayfinder_paths-0.1.15.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
139
- wayfinder_paths-0.1.15.dist-info/RECORD,,
127
+ wayfinder_paths-0.1.16.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
128
+ wayfinder_paths-0.1.16.dist-info/METADATA,sha256=baZT_LBKdtV8t7MzDqM8CGDoQ4nMwUDxototj9fmaHw,22924
129
+ wayfinder_paths-0.1.16.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
130
+ wayfinder_paths-0.1.16.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.8.1
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,125 +0,0 @@
1
- """
2
- SDK Usage Examples
3
-
4
- Demonstrates how to use the SDK with custom client implementations.
5
- Use cases: mocks for testing, caching layers, alternative endpoints, rate limiting.
6
- """
7
-
8
- from typing import Any
9
-
10
- from wayfinder_paths.core.clients.ClientManager import ClientManager
11
- from wayfinder_paths.core.clients.TokenClient import TokenClient
12
-
13
-
14
- class CachedTokenClient:
15
- """Token client with in-memory caching"""
16
-
17
- def __init__(self):
18
- self._cache: dict[str, dict[str, Any]] = {}
19
- self._default_client = TokenClient()
20
-
21
- async def get_token_details(
22
- self, token_id: str, force_refresh: bool = False
23
- ) -> dict[str, Any]:
24
- cache_key = f"token_{token_id}"
25
- if not force_refresh and cache_key in self._cache:
26
- return self._cache[cache_key]
27
- data = await self._default_client.get_token_details(token_id, force_refresh)
28
- self._cache[cache_key] = data
29
- return data
30
-
31
- async def get_gas_token(self, chain_code: str) -> dict[str, Any]:
32
- return await self._default_client.get_gas_token(chain_code)
33
-
34
-
35
- class MockHyperlendClient:
36
- """Mock client for testing"""
37
-
38
- async def get_stable_markets(
39
- self,
40
- *,
41
- required_underlying_tokens: float | None = None,
42
- buffer_bps: int | None = None,
43
- min_buffer_tokens: float | None = None,
44
- ) -> dict[str, Any]:
45
- return {
46
- "markets": {
47
- "0xMockToken": {
48
- "symbol": "USDC",
49
- "symbol_canonical": "usdc",
50
- "display_symbol": "USDC",
51
- "reserve": {},
52
- "decimals": 6,
53
- "headroom": 1000000000000,
54
- "supply_cap": 5000000000000,
55
- }
56
- },
57
- "notes": [],
58
- }
59
-
60
- async def get_assets_view(
61
- self,
62
- *,
63
- user_address: str,
64
- ) -> dict[str, Any]:
65
- return {
66
- "block_number": 12345,
67
- "user": user_address,
68
- "native_balance_wei": 0,
69
- "native_balance": 0.0,
70
- "assets": [],
71
- "account_data": {
72
- "total_collateral_base": 0,
73
- "total_debt_base": 0,
74
- "available_borrows_base": 0,
75
- "current_liquidation_threshold": 0,
76
- "ltv": 0,
77
- "health_factor_wad": 0,
78
- "health_factor": 0.0,
79
- },
80
- "base_currency_info": {
81
- "marketReferenceCurrencyUnit": 100000000,
82
- "marketReferenceCurrencyPriceInUsd": 100000000,
83
- "networkBaseTokenPriceInUsd": 0,
84
- "networkBaseTokenPriceDecimals": 8,
85
- },
86
- }
87
-
88
- async def get_market_entry(
89
- self,
90
- *,
91
- token: str,
92
- ) -> dict[str, Any]:
93
- return {
94
- "symbol": "USDC",
95
- "symbol_canonical": "usdc",
96
- "display_symbol": "USDC",
97
- "reserve": {},
98
- }
99
-
100
- async def get_lend_rate_history(
101
- self,
102
- *,
103
- token: str,
104
- lookback_hours: int,
105
- force_refresh: bool | None = None,
106
- ) -> dict[str, Any]:
107
- return {
108
- "history": [],
109
- }
110
-
111
-
112
- async def example_sdk_usage():
113
- """Direct client injection - inject only what you customize"""
114
-
115
- custom_token_client = CachedTokenClient()
116
- custom_hyperlend_client = MockHyperlendClient()
117
-
118
- ClientManager(
119
- clients={
120
- "token": custom_token_client,
121
- "hyperlend": custom_hyperlend_client,
122
- },
123
- skip_auth=True,
124
- )
125
- pass
@@ -1,5 +0,0 @@
1
- """Core Engine Module"""
2
-
3
- from .StrategyJob import StrategyJob
4
-
5
- __all__ = ["StrategyJob", "GLOBAL_IMPORTS"]
File without changes
@@ -1,131 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from typing import Any
3
-
4
- from web3 import AsyncWeb3
5
-
6
- from wayfinder_paths.core.constants.base import DEFAULT_TRANSACTION_TIMEOUT
7
-
8
-
9
- class TokenTxn(ABC):
10
- """Interface describing high-level EVM transaction builders."""
11
-
12
- @abstractmethod
13
- async def build_send(
14
- self,
15
- *,
16
- token_id: str,
17
- amount: float,
18
- from_address: str,
19
- to_address: str,
20
- token_info: dict[str, Any] | None = None,
21
- ) -> tuple[bool, dict[str, Any] | str]:
22
- """Build raw transaction data for sending tokens."""
23
-
24
- @abstractmethod
25
- def build_erc20_approve(
26
- self,
27
- *,
28
- chain_id: int,
29
- token_address: str,
30
- from_address: str,
31
- spender: str,
32
- amount: int,
33
- ) -> tuple[bool, dict[str, Any] | str]:
34
- """Build raw ERC20 approve transaction data."""
35
-
36
- @abstractmethod
37
- async def read_erc20_allowance(
38
- self, chain: Any, token_address: str, from_address: str, spender_address: str
39
- ) -> dict[str, Any]:
40
- """Read allowance granted for a spender."""
41
-
42
-
43
- class EvmTxn(ABC):
44
- """
45
- Abstract base class for wallet providers.
46
-
47
- This interface abstracts all blockchain interactions needed by adapters so the
48
- rest of the codebase never touches raw web3 primitives. Implementations
49
- are responsible for RPC resolution, gas estimation, signing, broadcasting and
50
- transaction confirmations.
51
- """
52
-
53
- @abstractmethod
54
- async def broadcast_transaction(
55
- self,
56
- transaction: dict[str, Any],
57
- *,
58
- wait_for_receipt: bool = True,
59
- timeout: int = DEFAULT_TRANSACTION_TIMEOUT,
60
- confirmations: int = 1,
61
- ) -> tuple[bool, Any]:
62
- """
63
- Sign and broadcast a transaction dict.
64
-
65
- Providers must handle gas estimation, gas pricing, nonce selection, signing
66
- and submission internally so callers can simply pass the transaction data.
67
-
68
- Args:
69
- transaction: Dictionary describing the transaction (to, data, value, etc.)
70
- wait_for_receipt: Whether to wait for the transaction receipt
71
- timeout: Receipt timeout in seconds
72
- """
73
- pass
74
-
75
- @abstractmethod
76
- async def transaction_succeeded(
77
- self, tx_hash: str, chain_id: int, timeout: int = 120
78
- ) -> bool:
79
- """
80
- Check if a transaction hash succeeded on-chain.
81
-
82
- Args:
83
- tx_hash: Transaction hash to inspect
84
- chain_id: Chain ID where the transaction was broadcast
85
- timeout: Maximum seconds to wait for a receipt
86
-
87
- Returns:
88
- Boolean indicating whether the transaction completed successfully.
89
- """
90
- pass
91
-
92
- @abstractmethod
93
- def get_web3(self, chain_id: int) -> AsyncWeb3:
94
- """
95
- Return an AsyncWeb3 instance configured for the given chain.
96
-
97
- Implementations may create new instances per call or pull from an internal
98
- cache, but they must document whether the caller is responsible for closing
99
- the underlying HTTP session.
100
- """
101
- pass
102
-
103
-
104
- class Web3Service(ABC):
105
- """Facade that exposes low-level wallet access and higher-level EVM helpers."""
106
-
107
- @property
108
- @abstractmethod
109
- def evm_transactions(self) -> EvmTxn:
110
- """Return the wallet provider responsible for RPC, signing, and broadcasting."""
111
-
112
- @property
113
- @abstractmethod
114
- def token_transactions(self) -> TokenTxn:
115
- """Returns TokenTxn, for sends and swaps of any token"""
116
-
117
- async def broadcast_transaction(
118
- self,
119
- transaction: dict[str, Any],
120
- *,
121
- wait_for_receipt: bool = True,
122
- timeout: int = DEFAULT_TRANSACTION_TIMEOUT,
123
- ) -> tuple[bool, Any]:
124
- """Proxy convenience wrapper to underlying wallet provider."""
125
- return await self.evm_transactions.broadcast_transaction(
126
- transaction, wait_for_receipt=wait_for_receipt, timeout=timeout
127
- )
128
-
129
- def get_web3(self, chain_id: int):
130
- """Expose underlying web3 provider for ABI encoding helpers."""
131
- return self.evm_transactions.get_web3(chain_id)