iwa 0.0.26__tar.gz → 0.0.27__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.26/src/iwa.egg-info → iwa-0.0.27}/PKG-INFO +1 -1
- {iwa-0.0.26 → iwa-0.0.27}/pyproject.toml +2 -2
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/drain.py +5 -2
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/lifecycle.py +14 -6
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/staking.py +20 -9
- {iwa-0.0.26 → iwa-0.0.27/src/iwa.egg-info}/PKG-INFO +1 -1
- {iwa-0.0.26 → iwa-0.0.27}/LICENSE +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/README.md +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/setup.cfg +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/__main__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/errors.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/interface.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/manager.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chain/rate_limiter.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/chainlist.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/cli.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/constants.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/abis/erc20.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/abis/multisend.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/abis/multisend_call_only.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/cache.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/contract.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/erc20.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/contracts/multisend.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/db.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/ipfs.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/keys.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/mnemonic.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/monitor.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/plugins.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/pricing.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/rpc_monitor.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/secrets.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/account.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/balance.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/plugin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/safe.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transaction.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/base.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/erc20.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/multisend.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/native.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/services/transfer/swap.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/tables.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/test.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/tests/test_wallet.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/types.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/ui.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/utils.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/core/wallet.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/cow/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/cow/quotes.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/cow/swap.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/cow/types.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/cow_utils.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/plugin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/safe.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/tests/test_cow.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/gnosis/tests/test_safe.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/constants.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/activity_checker.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/mech.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/mech_marketplace.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/mech_marketplace_v1.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/mech_new.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/service_manager.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/service_registry.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/service_registry_token_utility.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/staking.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/abis/staking_token.json +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/activity_checker.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/base.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/mech.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/mech_marketplace.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/mech_marketplace_v1.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/contracts/staking.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/events.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/importer.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/mech_reference.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/plugin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/scripts/test_full_mech_flow.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/scripts/test_simple_lifecycle.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/base.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/service_manager/mech.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/conftest.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_importer.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_importer_error_handling.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_mech_contracts.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_contracts.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_integration.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_view.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_view_actions.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_olas_view_modals.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_plugin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_plugin_full.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_lifecycle.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager_errors.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager_flows.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager_mech.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager_rewards.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_manager_validation.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_service_staking.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_staking_integration.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tests/test_staking_validation.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tui/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/plugins/olas/tui/olas_view.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/check_profile.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/list_contracts.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/release.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/reset_env.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/reset_tenderly.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/restore_backup.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/test_chainlist.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tools/wallet_check.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/app.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/modals/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/modals/base.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/rpc.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/screens/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/screens/wallets.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/tests/test_app.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/tests/test_rpc.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/tests/test_wallets_refactor.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/tests/test_widgets.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/widgets/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/widgets/base.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/tui/workers.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/dependencies.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/accounts.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/__init__.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/admin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/funding.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/general.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/services.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/olas/staking.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/state.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/swap.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/routers/transactions.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/server.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/static/app.js +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/static/index.html +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/static/style.css +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/tests/test_web_endpoints.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/tests/test_web_olas.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/tests/test_web_swap.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa/web/tests/test_web_swap_coverage.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa.egg-info/SOURCES.txt +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa.egg-info/dependency_links.txt +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa.egg-info/entry_points.txt +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa.egg-info/requires.txt +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/iwa.egg-info/top_level.txt +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_cow.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_safe.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_transaction_retry_logic.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_tui.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_wallets_screen.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/legacy_web.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_account_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_balance_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_chain.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_chain_interface.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_chain_interface_coverage.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_cli.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_contract.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_db.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_drain_coverage.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_erc20.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_gnosis_plugin.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_keys.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_legacy_wallet.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_main.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_migration.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_mnemonic.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_modals.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_models.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_monitor.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_multisend.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_plugin_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_pricing.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_rate_limiter.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_reset_tenderly.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_rpc_efficiency.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_rpc_rotation.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_rpc_view.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_safe_coverage.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_safe_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_service_manager_integration.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_service_manager_structure.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_service_transaction.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_staking_router.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_staking_simple.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_tables.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transaction_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transfer_multisend.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transfer_native.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transfer_security.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transfer_structure.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_transfer_swap_unit.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_ui_coverage.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_utils.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tests/test_workers.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/src/tools/create_and_stake_service.py +0 -0
- {iwa-0.0.26 → iwa-0.0.27}/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.27"
|
|
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"
|
|
@@ -71,7 +71,7 @@ where = ["src"]
|
|
|
71
71
|
|
|
72
72
|
[tool.ruff]
|
|
73
73
|
line-length = 100
|
|
74
|
-
target-version = "0.0.
|
|
74
|
+
target-version = "0.0.27"
|
|
75
75
|
fix = true
|
|
76
76
|
|
|
77
77
|
[tool.ruff.lint]
|
|
@@ -59,9 +59,12 @@ class DrainManagerMixin:
|
|
|
59
59
|
|
|
60
60
|
logger.info(f"Claiming {accrued_rewards / 1e18:.4f} OLAS rewards for service {service_id}")
|
|
61
61
|
|
|
62
|
+
# Use service owner which holds the reward rights (not necessarily master)
|
|
63
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
64
|
+
|
|
62
65
|
# Prepare and send claim transaction
|
|
63
66
|
claim_tx = staking_contract.prepare_claim_tx(
|
|
64
|
-
from_address=
|
|
67
|
+
from_address=owner_address,
|
|
65
68
|
service_id=service_id,
|
|
66
69
|
)
|
|
67
70
|
|
|
@@ -71,7 +74,7 @@ class DrainManagerMixin:
|
|
|
71
74
|
|
|
72
75
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
73
76
|
claim_tx,
|
|
74
|
-
signer_address_or_tag=
|
|
77
|
+
signer_address_or_tag=owner_address,
|
|
75
78
|
chain_name=self.chain_name,
|
|
76
79
|
tags=["olas_claim_rewards"],
|
|
77
80
|
)
|
|
@@ -522,9 +522,14 @@ class LifecycleManagerMixin:
|
|
|
522
522
|
f"activation_value={activation_value} wei"
|
|
523
523
|
)
|
|
524
524
|
|
|
525
|
-
|
|
525
|
+
# Use service owner which holds the NFT (not necessarily master)
|
|
526
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
527
|
+
|
|
528
|
+
logger.debug(
|
|
529
|
+
f"[ACTIVATE] Preparing tx from {owner_address}: service_id={service_id}, value={activation_value}"
|
|
530
|
+
)
|
|
526
531
|
activate_tx = self.manager.prepare_activate_registration_tx(
|
|
527
|
-
from_address=
|
|
532
|
+
from_address=owner_address,
|
|
528
533
|
service_id=service_id,
|
|
529
534
|
value=activation_value,
|
|
530
535
|
)
|
|
@@ -532,7 +537,7 @@ class LifecycleManagerMixin:
|
|
|
532
537
|
|
|
533
538
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
534
539
|
transaction=activate_tx,
|
|
535
|
-
signer_address_or_tag=
|
|
540
|
+
signer_address_or_tag=owner_address,
|
|
536
541
|
chain_name=self.chain_name,
|
|
537
542
|
)
|
|
538
543
|
|
|
@@ -720,13 +725,16 @@ class LifecycleManagerMixin:
|
|
|
720
725
|
f"total_value={total_value} wei"
|
|
721
726
|
)
|
|
722
727
|
|
|
728
|
+
# Use service owner which holds the NFT (not necessarily master)
|
|
729
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
730
|
+
|
|
723
731
|
logger.debug(
|
|
724
|
-
f"[REGISTER] Preparing tx: agent={agent_account_address}, "
|
|
732
|
+
f"[REGISTER] Preparing tx from {owner_address}: agent={agent_account_address}, "
|
|
725
733
|
f"agent_ids={self.service.agent_ids}, value={total_value}"
|
|
726
734
|
)
|
|
727
735
|
|
|
728
736
|
register_tx = self.manager.prepare_register_agents_tx(
|
|
729
|
-
from_address=
|
|
737
|
+
from_address=owner_address,
|
|
730
738
|
service_id=service_id,
|
|
731
739
|
agent_instances=[agent_account_address],
|
|
732
740
|
agent_ids=self.service.agent_ids,
|
|
@@ -736,7 +744,7 @@ class LifecycleManagerMixin:
|
|
|
736
744
|
|
|
737
745
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
738
746
|
transaction=register_tx,
|
|
739
|
-
signer_address_or_tag=
|
|
747
|
+
signer_address_or_tag=owner_address,
|
|
740
748
|
chain_name=self.chain_name,
|
|
741
749
|
tags=["olas_register_agent"],
|
|
742
750
|
)
|
|
@@ -408,17 +408,20 @@ class StakingManagerMixin:
|
|
|
408
408
|
True if approval succeeded, False otherwise.
|
|
409
409
|
|
|
410
410
|
"""
|
|
411
|
+
# Use service owner which holds the NFT (not necessarily master)
|
|
412
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
413
|
+
|
|
411
414
|
# Approve service NFT - this is an ERC-721 approval, not ERC-20
|
|
412
|
-
logger.debug("[STAKE] Approving service NFT for staking contract...")
|
|
415
|
+
logger.debug(f"[STAKE] Approving service NFT for staking contract from {owner_address}...")
|
|
413
416
|
approve_tx = self.registry.prepare_approve_tx(
|
|
414
|
-
from_address=
|
|
417
|
+
from_address=owner_address,
|
|
415
418
|
spender=staking_contract.address,
|
|
416
419
|
id_=self.service.service_id,
|
|
417
420
|
)
|
|
418
421
|
|
|
419
422
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
420
423
|
transaction=approve_tx,
|
|
421
|
-
signer_address_or_tag=
|
|
424
|
+
signer_address_or_tag=owner_address,
|
|
422
425
|
chain_name=self.chain_name,
|
|
423
426
|
tags=["olas_approve_service_nft"],
|
|
424
427
|
)
|
|
@@ -452,16 +455,19 @@ class StakingManagerMixin:
|
|
|
452
455
|
True if stake succeeded and ServiceStaked event was found.
|
|
453
456
|
|
|
454
457
|
"""
|
|
455
|
-
|
|
458
|
+
# Use service owner which holds the NFT (not necessarily master)
|
|
459
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
460
|
+
|
|
461
|
+
logger.debug(f"[STAKE] Preparing stake transaction from {owner_address}...")
|
|
456
462
|
stake_tx = staking_contract.prepare_stake_tx(
|
|
457
|
-
from_address=
|
|
463
|
+
from_address=owner_address,
|
|
458
464
|
service_id=self.service.service_id,
|
|
459
465
|
)
|
|
460
466
|
logger.debug(f"[STAKE] TX prepared: to={stake_tx.get('to')}")
|
|
461
467
|
|
|
462
468
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
463
469
|
transaction=stake_tx,
|
|
464
|
-
signer_address_or_tag=
|
|
470
|
+
signer_address_or_tag=owner_address,
|
|
465
471
|
chain_name=self.chain_name,
|
|
466
472
|
tags=["olas_stake_service"],
|
|
467
473
|
)
|
|
@@ -541,11 +547,16 @@ class StakingManagerMixin:
|
|
|
541
547
|
except Exception as e:
|
|
542
548
|
logger.warning(f"Could not verify staking duration: {e}. Proceeding with caution.")
|
|
543
549
|
|
|
550
|
+
# Use service owner which holds the NFT (not necessarily master)
|
|
551
|
+
owner_address = self.service.service_owner_address or self.wallet.master_account.address
|
|
552
|
+
|
|
544
553
|
# Unstake the service
|
|
545
554
|
try:
|
|
546
|
-
logger.info(
|
|
555
|
+
logger.info(
|
|
556
|
+
f"Preparing unstake transaction for service {self.service.service_id} from {owner_address}"
|
|
557
|
+
)
|
|
547
558
|
unstake_tx = staking_contract.prepare_unstake_tx(
|
|
548
|
-
from_address=
|
|
559
|
+
from_address=owner_address,
|
|
549
560
|
service_id=self.service.service_id,
|
|
550
561
|
)
|
|
551
562
|
logger.info("Unstake transaction prepared successfully")
|
|
@@ -556,7 +567,7 @@ class StakingManagerMixin:
|
|
|
556
567
|
|
|
557
568
|
success, receipt = self.wallet.sign_and_send_transaction(
|
|
558
569
|
transaction=unstake_tx,
|
|
559
|
-
signer_address_or_tag=
|
|
570
|
+
signer_address_or_tag=owner_address,
|
|
560
571
|
chain_name=self.chain_name,
|
|
561
572
|
tags=["olas_unstake_service"],
|
|
562
573
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.26 → iwa-0.0.27}/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
|