iwa 0.0.64__tar.gz → 0.0.66__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. {iwa-0.0.64/src/iwa.egg-info → iwa-0.0.66}/PKG-INFO +1 -1
  2. {iwa-0.0.64 → iwa-0.0.66}/pyproject.toml +2 -2
  3. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/__init__.py +2 -2
  4. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/drain.py +7 -0
  5. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/state.py +8 -0
  6. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/app.js +15 -1
  7. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/index.html +2 -2
  8. {iwa-0.0.64 → iwa-0.0.66/src/iwa.egg-info}/PKG-INFO +1 -1
  9. {iwa-0.0.64 → iwa-0.0.66}/LICENSE +0 -0
  10. {iwa-0.0.64 → iwa-0.0.66}/README.md +0 -0
  11. {iwa-0.0.64 → iwa-0.0.66}/setup.cfg +0 -0
  12. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/__init__.py +0 -0
  13. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/__main__.py +0 -0
  14. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/__init__.py +0 -0
  15. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/__init__.py +0 -0
  16. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/errors.py +0 -0
  17. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/interface.py +0 -0
  18. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/manager.py +0 -0
  19. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/models.py +0 -0
  20. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/rate_limiter.py +0 -0
  21. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chainlist.py +0 -0
  22. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/cli.py +0 -0
  23. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/constants.py +0 -0
  24. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/__init__.py +0 -0
  25. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/erc20.json +0 -0
  26. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/multisend.json +0 -0
  27. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/multisend_call_only.json +0 -0
  28. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/cache.py +0 -0
  29. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/contract.py +0 -0
  30. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/decoder.py +0 -0
  31. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/erc20.py +0 -0
  32. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/multisend.py +0 -0
  33. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/db.py +0 -0
  34. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/http.py +0 -0
  35. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/ipfs.py +0 -0
  36. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/keys.py +0 -0
  37. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/mnemonic.py +0 -0
  38. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/models.py +0 -0
  39. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/monitor.py +0 -0
  40. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/plugins.py +0 -0
  41. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/pricing.py +0 -0
  42. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/rpc_monitor.py +0 -0
  43. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/secrets.py +0 -0
  44. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/__init__.py +0 -0
  45. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/account.py +0 -0
  46. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/balance.py +0 -0
  47. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/plugin.py +0 -0
  48. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/safe.py +0 -0
  49. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/safe_executor.py +0 -0
  50. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transaction.py +0 -0
  51. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/base.py +0 -0
  52. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/erc20.py +0 -0
  53. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/multisend.py +0 -0
  54. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/native.py +0 -0
  55. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/swap.py +0 -0
  56. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tables.py +0 -0
  57. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/test.py +0 -0
  58. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_gnosis_fee.py +0 -0
  59. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_ipfs.py +0 -0
  60. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_pricing.py +0 -0
  61. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_regression_fixes.py +0 -0
  62. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_wallet.py +0 -0
  63. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/types.py +0 -0
  64. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/ui.py +0 -0
  65. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/utils.py +0 -0
  66. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/wallet.py +0 -0
  67. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/__init__.py +0 -0
  68. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/__init__.py +0 -0
  69. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/__init__.py +0 -0
  70. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/quotes.py +0 -0
  71. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/swap.py +0 -0
  72. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/types.py +0 -0
  73. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow_utils.py +0 -0
  74. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/plugin.py +0 -0
  75. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/safe.py +0 -0
  76. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/tests/test_cow.py +0 -0
  77. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/tests/test_safe.py +0 -0
  78. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/__init__.py +0 -0
  79. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/constants.py +0 -0
  80. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/activity_checker.json +0 -0
  81. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech.json +0 -0
  82. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_marketplace.json +0 -0
  83. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_marketplace_v1.json +0 -0
  84. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_new.json +0 -0
  85. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_manager.json +0 -0
  86. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_registry.json +0 -0
  87. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_registry_token_utility.json +0 -0
  88. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/staking.json +0 -0
  89. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/staking_token.json +0 -0
  90. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/activity_checker.py +0 -0
  91. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/base.py +0 -0
  92. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech.py +0 -0
  93. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech_marketplace.py +0 -0
  94. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech_marketplace_v1.py +0 -0
  95. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/service.py +0 -0
  96. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/staking.py +0 -0
  97. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/events.py +0 -0
  98. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/importer.py +0 -0
  99. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/mech_reference.py +0 -0
  100. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/models.py +0 -0
  101. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/plugin.py +0 -0
  102. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/scripts/test_full_mech_flow.py +0 -0
  103. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/scripts/test_simple_lifecycle.py +0 -0
  104. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/__init__.py +0 -0
  105. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/base.py +0 -0
  106. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/lifecycle.py +0 -0
  107. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/mech.py +0 -0
  108. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/staking.py +0 -0
  109. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/conftest.py +0 -0
  110. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_importer.py +0 -0
  111. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_importer_error_handling.py +0 -0
  112. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_mech_contracts.py +0 -0
  113. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_archiving.py +0 -0
  114. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_contracts.py +0 -0
  115. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_integration.py +0 -0
  116. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_models.py +0 -0
  117. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view.py +0 -0
  118. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view_actions.py +0 -0
  119. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view_modals.py +0 -0
  120. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_plugin.py +0 -0
  121. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_plugin_full.py +0 -0
  122. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_lifecycle.py +0 -0
  123. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager.py +0 -0
  124. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_errors.py +0 -0
  125. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_flows.py +0 -0
  126. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_mech.py +0 -0
  127. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_rewards.py +0 -0
  128. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_validation.py +0 -0
  129. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_staking.py +0 -0
  130. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_staking_integration.py +0 -0
  131. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_staking_validation.py +0 -0
  132. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tui/__init__.py +0 -0
  133. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tui/olas_view.py +0 -0
  134. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/__init__.py +0 -0
  135. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/check_profile.py +0 -0
  136. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/drain_accounts.py +0 -0
  137. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/list_contracts.py +0 -0
  138. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/release.py +0 -0
  139. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/reset_env.py +0 -0
  140. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/reset_tenderly.py +0 -0
  141. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/restore_backup.py +0 -0
  142. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/test_chainlist.py +0 -0
  143. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/wallet_check.py +0 -0
  144. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/__init__.py +0 -0
  145. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/app.py +0 -0
  146. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/modals/__init__.py +0 -0
  147. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/modals/base.py +0 -0
  148. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/rpc.py +0 -0
  149. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/screens/__init__.py +0 -0
  150. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/screens/wallets.py +0 -0
  151. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_app.py +0 -0
  152. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_rpc.py +0 -0
  153. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_wallets_refactor.py +0 -0
  154. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_widgets.py +0 -0
  155. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/widgets/__init__.py +0 -0
  156. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/widgets/base.py +0 -0
  157. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/workers.py +0 -0
  158. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/dependencies.py +0 -0
  159. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/models.py +0 -0
  160. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/accounts.py +0 -0
  161. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/__init__.py +0 -0
  162. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/admin.py +0 -0
  163. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/funding.py +0 -0
  164. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/general.py +0 -0
  165. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/services.py +0 -0
  166. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/staking.py +0 -0
  167. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/swap.py +0 -0
  168. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/transactions.py +0 -0
  169. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/server.py +0 -0
  170. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/style.css +0 -0
  171. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_endpoints.py +0 -0
  172. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_olas.py +0 -0
  173. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_swap.py +0 -0
  174. {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_swap_coverage.py +0 -0
  175. {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/SOURCES.txt +0 -0
  176. {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/dependency_links.txt +0 -0
  177. {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/entry_points.txt +0 -0
  178. {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/requires.txt +0 -0
  179. {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/top_level.txt +0 -0
  180. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_cow.py +0 -0
  181. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_safe.py +0 -0
  182. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_transaction_retry_logic.py +0 -0
  183. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_tui.py +0 -0
  184. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_wallets_screen.py +0 -0
  185. {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_web.py +0 -0
  186. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_account_service.py +0 -0
  187. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_balance_service.py +0 -0
  188. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain.py +0 -0
  189. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain_interface.py +0 -0
  190. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain_interface_coverage.py +0 -0
  191. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chainlist_enrichment.py +0 -0
  192. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_cli.py +0 -0
  193. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_contract.py +0 -0
  194. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_contract_cache.py +0 -0
  195. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_db.py +0 -0
  196. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_drain_coverage.py +0 -0
  197. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_erc20.py +0 -0
  198. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_gnosis_plugin.py +0 -0
  199. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_keys.py +0 -0
  200. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_legacy_wallet.py +0 -0
  201. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_main.py +0 -0
  202. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_migration.py +0 -0
  203. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_mnemonic.py +0 -0
  204. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_modals.py +0 -0
  205. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_models.py +0 -0
  206. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_monitor.py +0 -0
  207. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_multisend.py +0 -0
  208. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_plugin_service.py +0 -0
  209. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rate_limiter.py +0 -0
  210. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rate_limiter_retry.py +0 -0
  211. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_reset_tenderly.py +0 -0
  212. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_efficiency.py +0 -0
  213. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_rate_limit.py +0 -0
  214. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_rotation.py +0 -0
  215. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_view.py +0 -0
  216. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_coverage.py +0 -0
  217. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_executor.py +0 -0
  218. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_integration.py +0 -0
  219. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_service.py +0 -0
  220. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_manager_integration.py +0 -0
  221. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_manager_structure.py +0 -0
  222. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_transaction.py +0 -0
  223. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_staking_router.py +0 -0
  224. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_staking_simple.py +0 -0
  225. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_tables.py +0 -0
  226. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transaction_service.py +0 -0
  227. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_multisend.py +0 -0
  228. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_native.py +0 -0
  229. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_security.py +0 -0
  230. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_structure.py +0 -0
  231. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_swap_unit.py +0 -0
  232. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_ui_coverage.py +0 -0
  233. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_utils.py +0 -0
  234. {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_workers.py +0 -0
  235. {iwa-0.0.64 → iwa-0.0.66}/src/tools/create_and_stake_service.py +0 -0
  236. {iwa-0.0.64 → iwa-0.0.66}/src/tools/verify_drain.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iwa
3
- Version: 0.0.64
3
+ Version: 0.0.66
4
4
  Summary: A secure, modular, and plugin-based framework for crypto agents and ops
5
5
  Requires-Python: <4.0,>=3.12
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "iwa"
3
- version = "0.0.64"
3
+ version = "0.0.66"
4
4
  description = "A secure, modular, and plugin-based framework for crypto agents and ops"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12,<4.0"
@@ -72,7 +72,7 @@ where = ["src"]
72
72
 
73
73
  [tool.ruff]
74
74
  line-length = 100
75
- target-version = "0.0.64"
75
+ target-version = "0.0.66"
76
76
  fix = true
77
77
 
78
78
  [tool.ruff.lint]
@@ -136,8 +136,8 @@ class TransferService(
136
136
 
137
137
  amount_eth = float(chain_interface.web3.from_wei(amount_wei, "ether"))
138
138
  logger.info(
139
- f"Sending {amount_eth:.4f} {token_address_or_name} "
140
- f"from {from_address_or_tag} to {to_address_or_tag}"
139
+ f"Sending {amount_eth:.4f} {token_symbol} "
140
+ f"from {from_tag or from_address_or_tag} to {to_tag or to_address_or_tag}"
141
141
  )
142
142
 
143
143
  if is_safe:
@@ -80,6 +80,13 @@ class DrainManagerMixin:
80
80
  logger.error("Failed to prepare claim transaction")
81
81
  return False, 0
82
82
 
83
+ # Simulate transaction to catch revert before sending
84
+ try:
85
+ staking_contract.chain_interface.web3.eth.call(claim_tx)
86
+ except Exception as e:
87
+ logger.warning(f"Claim would revert, skipping: {e}")
88
+ return False, 0
89
+
83
90
  success, receipt = self.wallet.sign_and_send_transaction(
84
91
  claim_tx,
85
92
  signer_address_or_tag=owner_address,
@@ -3,6 +3,7 @@
3
3
  from fastapi import APIRouter, Depends
4
4
 
5
5
  from iwa.core.chain import ChainInterfaces
6
+ from iwa.core.models import Config
6
7
  from iwa.web.dependencies import verify_auth
7
8
 
8
9
  router = APIRouter(prefix="/api", tags=["state"])
@@ -25,12 +26,19 @@ def get_state(auth: bool = Depends(verify_auth)):
25
26
  # Get token symbols from the interface (dict of symbol -> address)
26
27
  tokens[name] = list(interface.tokens.keys())
27
28
 
29
+ # Get whitelist from config
30
+ config = Config()
31
+ whitelist = {}
32
+ if config.core and config.core.whitelist:
33
+ whitelist = {tag: str(addr) for tag, addr in config.core.whitelist.items()}
34
+
28
35
  return {
29
36
  "chains": chain_names,
30
37
  "tokens": tokens,
31
38
  "native_currencies": native_currencies,
32
39
  "default_chain": "gnosis",
33
40
  "testing": ChainInterfaces().gnosis.is_tenderly,
41
+ "whitelist": whitelist,
34
42
  }
35
43
 
36
44
 
@@ -12,6 +12,7 @@ document.addEventListener("DOMContentLoaded", () => {
12
12
  olasServicesCache: {}, // { chain: [services] }
13
13
  stakingContractsCache: null, // Cached staking contracts
14
14
  olasPriceCache: null, // Cached OLAS price in EUR
15
+ whitelist: {}, // { tag: address } from config
15
16
  };
16
17
 
17
18
  // Real-time countdown updater for unstake availability
@@ -138,6 +139,7 @@ document.addEventListener("DOMContentLoaded", () => {
138
139
  state.chains = data.chains;
139
140
  state.tokens = data.tokens;
140
141
  state.nativeCurrencies = data.native_currencies || {};
142
+ state.whitelist = data.whitelist || {};
141
143
 
142
144
  // Update status indicator for testing mode
143
145
  const statusText = document.getElementById("status-text");
@@ -518,12 +520,24 @@ document.addEventListener("DOMContentLoaded", () => {
518
520
  )
519
521
  .join("");
520
522
 
521
- toSelect.innerHTML = state.accounts
523
+ // Build To options: own accounts + whitelisted addresses
524
+ const accountOptions = state.accounts
522
525
  .map(
523
526
  (acc) =>
524
527
  `<option value="${escapeHtml(acc.tag)}">${escapeHtml(acc.tag)}</option>`,
525
528
  )
526
529
  .join("");
530
+ const whitelistOptions = Object.entries(state.whitelist)
531
+ .map(
532
+ ([tag, addr]) =>
533
+ `<option value="${escapeHtml(addr)}">${escapeHtml(tag)} (whitelist)</option>`,
534
+ )
535
+ .join("");
536
+ toSelect.innerHTML =
537
+ accountOptions +
538
+ (whitelistOptions
539
+ ? `<optgroup label="Whitelist">${whitelistOptions}</optgroup>`
540
+ : "");
527
541
 
528
542
  tokenSelect.innerHTML =
529
543
  `<option value="native">${escapeHtml(nativeSymbol)}</option>` +
@@ -118,7 +118,7 @@
118
118
  </div>
119
119
  <div class="form-group">
120
120
  <label>Amount</label>
121
- <input type="number" id="tx-amount" step="1" placeholder="0.00" required />
121
+ <input type="number" id="tx-amount" step="any" placeholder="0.00" required />
122
122
  </div>
123
123
  <div class="form-group">
124
124
  <label>Token</label>
@@ -538,6 +538,6 @@
538
538
  </div>
539
539
  <!-- Modals (minimal implementation for now) -->
540
540
  <div id="toast-container" class="toast-container"></div>
541
- <script src="/static/app.js?v=1.0.4"></script>
541
+ <script src="/static/app.js?v=1.0.6"></script>
542
542
  </body>
543
543
  </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iwa
3
- Version: 0.0.64
3
+ Version: 0.0.66
4
4
  Summary: A secure, modular, and plugin-based framework for crypto agents and ops
5
5
  Requires-Python: <4.0,>=3.12
6
6
  Description-Content-Type: text/markdown
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
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
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
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
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
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
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
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
File without changes