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.
- {iwa-0.0.64/src/iwa.egg-info → iwa-0.0.66}/PKG-INFO +1 -1
- {iwa-0.0.64 → iwa-0.0.66}/pyproject.toml +2 -2
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/__init__.py +2 -2
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/drain.py +7 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/state.py +8 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/app.js +15 -1
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/index.html +2 -2
- {iwa-0.0.64 → iwa-0.0.66/src/iwa.egg-info}/PKG-INFO +1 -1
- {iwa-0.0.64 → iwa-0.0.66}/LICENSE +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/README.md +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/setup.cfg +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/__main__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/errors.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/interface.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/manager.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chain/rate_limiter.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/chainlist.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/cli.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/constants.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/erc20.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/multisend.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/abis/multisend_call_only.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/cache.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/contract.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/decoder.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/erc20.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/contracts/multisend.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/db.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/http.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/ipfs.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/keys.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/mnemonic.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/monitor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/plugins.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/pricing.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/rpc_monitor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/secrets.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/account.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/balance.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/plugin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/safe.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/safe_executor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transaction.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/base.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/erc20.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/multisend.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/native.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/services/transfer/swap.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tables.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/test.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_gnosis_fee.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_ipfs.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_pricing.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_regression_fixes.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/tests/test_wallet.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/types.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/ui.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/utils.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/core/wallet.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/quotes.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/swap.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow/types.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/cow_utils.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/plugin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/safe.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/tests/test_cow.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/gnosis/tests/test_safe.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/constants.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/activity_checker.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_marketplace.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_marketplace_v1.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/mech_new.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_manager.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_registry.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_registry_token_utility.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/staking.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/staking_token.json +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/activity_checker.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/base.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech_marketplace.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/mech_marketplace_v1.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/staking.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/events.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/importer.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/mech_reference.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/plugin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/scripts/test_full_mech_flow.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/scripts/test_simple_lifecycle.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/base.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/lifecycle.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/mech.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/service_manager/staking.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/conftest.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_importer.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_importer_error_handling.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_mech_contracts.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_archiving.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_contracts.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_integration.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view_actions.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_olas_view_modals.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_plugin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_plugin_full.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_lifecycle.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_errors.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_flows.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_mech.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_rewards.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_manager_validation.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_service_staking.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_staking_integration.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tests/test_staking_validation.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tui/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/tui/olas_view.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/check_profile.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/drain_accounts.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/list_contracts.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/release.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/reset_env.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/reset_tenderly.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/restore_backup.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/test_chainlist.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tools/wallet_check.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/app.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/modals/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/modals/base.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/rpc.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/screens/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/screens/wallets.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_app.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_rpc.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_wallets_refactor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/tests/test_widgets.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/widgets/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/widgets/base.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/tui/workers.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/dependencies.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/accounts.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/__init__.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/admin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/funding.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/general.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/services.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/olas/staking.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/swap.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/routers/transactions.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/server.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/static/style.css +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_endpoints.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_olas.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_swap.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa/web/tests/test_web_swap_coverage.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/SOURCES.txt +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/dependency_links.txt +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/entry_points.txt +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/requires.txt +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/iwa.egg-info/top_level.txt +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_cow.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_safe.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_transaction_retry_logic.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_tui.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_wallets_screen.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/legacy_web.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_account_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_balance_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain_interface.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chain_interface_coverage.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_chainlist_enrichment.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_cli.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_contract.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_contract_cache.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_db.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_drain_coverage.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_erc20.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_gnosis_plugin.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_keys.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_legacy_wallet.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_main.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_migration.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_mnemonic.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_modals.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_models.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_monitor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_multisend.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_plugin_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rate_limiter.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rate_limiter_retry.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_reset_tenderly.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_efficiency.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_rate_limit.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_rotation.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_rpc_view.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_coverage.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_executor.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_integration.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_safe_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_manager_integration.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_manager_structure.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_service_transaction.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_staking_router.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_staking_simple.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_tables.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transaction_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_multisend.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_native.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_security.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_structure.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_transfer_swap_unit.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_ui_coverage.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_utils.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tests/test_workers.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tools/create_and_stake_service.py +0 -0
- {iwa-0.0.64 → iwa-0.0.66}/src/tools/verify_drain.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "iwa"
|
|
3
|
-
version = "0.0.
|
|
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.
|
|
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} {
|
|
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
|
-
|
|
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="
|
|
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.
|
|
541
|
+
<script src="/static/app.js?v=1.0.6"></script>
|
|
542
542
|
</body>
|
|
543
543
|
</html>
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iwa-0.0.64 → iwa-0.0.66}/src/iwa/plugins/olas/contracts/abis/service_registry_token_utility.json
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|