ipor-fusion 4.0.0.dev291__tar.gz → 4.0.0.dev295__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.
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/AGENTS.md +11 -1
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/MIGRATION_4.md +6 -2
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/PKG-INFO +7 -3
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/README.md +6 -2
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/__init__.py +2 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/about.py +2 -1
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/__init__.py +2 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/external_state_executor.py +46 -3
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/models.py +3 -2
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_external_state_executor.py +30 -1
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_public_api.py +2 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/scripts/crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/uv.lock +0 -0
|
@@ -154,6 +154,15 @@ the lifecycle matrix follows that.
|
|
|
154
154
|
`commit-lint.yml` fails a PR whose commit subjects or title break it. Never
|
|
155
155
|
hand-bump `project.version`; the release workflow stamps it and re-locks
|
|
156
156
|
`uv.lock`.
|
|
157
|
+
- Preview features (`ipor_fusion.crosschain` with its subpackages, and
|
|
158
|
+
`ipor_fusion.hypercore`) keep no backward compatibility: they follow the
|
|
159
|
+
current official contracts only, and support for retired deployments (the
|
|
160
|
+
pilot executors and factories, canaries) is removed rather than kept beside
|
|
161
|
+
them. From 4.1 on, a breaking change confined to them ships as `feat`/`fix`
|
|
162
|
+
without `!` or a `BREAKING CHANGE:` footer, so it never forces a major
|
|
163
|
+
release; anything it changes outside those packages (the top level, the
|
|
164
|
+
`vault info` document, the CLI and MCP) is still breaking by the usual rules.
|
|
165
|
+
4.0 itself keeps its MIGRATION_4.md entries for them, for 3.x users.
|
|
157
166
|
- This repository is public, and commit messages also ship in `CHANGELOG.md`
|
|
158
167
|
inside the wheel. No issue-tracker keys (`IL-` plus a number), internal hosts,
|
|
159
168
|
dashboard links or private repository names in commits, branch names, PR
|
|
@@ -207,7 +216,8 @@ the lifecycle matrix follows that.
|
|
|
207
216
|
path. Adding or removing a
|
|
208
217
|
name updates the snapshots in `tests/test_public_api.py` (every `__all__`, and
|
|
209
218
|
the names each public module keeps by path); moving a name out of a public
|
|
210
|
-
module leaves a re-export there. A removal or rename is a breaking change
|
|
219
|
+
module leaves a re-export there. A removal or rename is a breaking change,
|
|
220
|
+
except inside a preview package (see Conventions).
|
|
211
221
|
A project type used in a public signature or field is exported too
|
|
212
222
|
(`tests/test_public_type_reachability.py`). The package is `py.typed`, so public APIs stay fully
|
|
213
223
|
annotated.
|
|
@@ -438,8 +438,12 @@ exist; the comparison is equality either way.
|
|
|
438
438
|
- `ExternalStateVaultState.last_checked_custodian_timestamp` is
|
|
439
439
|
`last_checked_custodian_marker` and `BalanceFuseSnapshot.last_custodian_update_timestamp`
|
|
440
440
|
is `custodian_marker`, both a `CustodianMarker` (an opaque value the
|
|
441
|
-
contracts only compare for equality): a timestamp on an earlier
|
|
442
|
-
|
|
441
|
+
contracts only compare for equality): a unix timestamp on an earlier
|
|
442
|
+
executor, a confirmation count on a released one.
|
|
443
|
+
`ExternalStateVaultState.custodian_marker_kind` (`CustodianMarkerKind`, read
|
|
444
|
+
from the executor at the snapshot block; `None` without an executor) and
|
|
445
|
+
`ExternalStateExecutor.read_custodian_marker_kind(ctx)` say which; never
|
|
446
|
+
compare a count with a clock. `ExternalStateExecutor.confirm_count()`
|
|
443
447
|
exists only on the released executor (it reverts on an earlier one), and
|
|
444
448
|
`last_custodian_update_timestamp()` reads the timestamp on both.
|
|
445
449
|
- New on the released build: `ExternalStateExecutor.unforwarded_credit(asset)`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ipor-fusion
|
|
3
|
-
Version: 4.0.0.
|
|
3
|
+
Version: 4.0.0.dev295
|
|
4
4
|
Summary: The IPOR Fusion SDK for Python
|
|
5
5
|
Project-URL: homepage, https://ipor.io
|
|
6
6
|
Project-URL: repository, https://github.com/IPOR-Labs/ipor-fusion.py
|
|
@@ -418,7 +418,8 @@ release; adding one does not.
|
|
|
418
418
|
- **Preview features** (`PREVIEW_FEATURES` in `ipor_fusion.about`) export only
|
|
419
419
|
from their own subpackages, `ipor_fusion.crosschain` (with `crosschain.fuses`,
|
|
420
420
|
`crosschain.ccip` and `crosschain.stargate`) and `ipor_fusion.hypercore`, never
|
|
421
|
-
from the top level, and
|
|
421
|
+
from the top level, and keep no backward compatibility: a minor release may
|
|
422
|
+
change or remove them (see [Preview features](#preview-features-ipor_fusioncrosschain-ipor_fusionhypercore)). Their exception classes
|
|
422
423
|
stay in `ipor_fusion.errors`, and the `vault info` document's HyperCore blocks
|
|
423
424
|
(`HyperCoreJson`, ...) stay with the document.
|
|
424
425
|
- **Third-party types** are not re-exported: import `ChecksumAddress` and
|
|
@@ -488,7 +489,10 @@ Fuse.method() --> FuseAction --> PlasmaVault.execute([actions]) --> Call
|
|
|
488
489
|
### Preview features (`ipor_fusion.crosschain`, `ipor_fusion.hypercore`)
|
|
489
490
|
|
|
490
491
|
Not production (see the note at the top) and outside the stable top level:
|
|
491
|
-
import these from their subpackage
|
|
492
|
+
import these from their subpackage. They track the current official contracts
|
|
493
|
+
only, with no backward compatibility: from 4.1 on, a minor release may change or
|
|
494
|
+
remove any of these names and drops support for retired deployments (such as
|
|
495
|
+
the pilot executors and factories). Pin an exact version if you depend on them.
|
|
492
496
|
|
|
493
497
|
| Name | Purpose |
|
|
494
498
|
|------|---------|
|
|
@@ -369,7 +369,8 @@ release; adding one does not.
|
|
|
369
369
|
- **Preview features** (`PREVIEW_FEATURES` in `ipor_fusion.about`) export only
|
|
370
370
|
from their own subpackages, `ipor_fusion.crosschain` (with `crosschain.fuses`,
|
|
371
371
|
`crosschain.ccip` and `crosschain.stargate`) and `ipor_fusion.hypercore`, never
|
|
372
|
-
from the top level, and
|
|
372
|
+
from the top level, and keep no backward compatibility: a minor release may
|
|
373
|
+
change or remove them (see [Preview features](#preview-features-ipor_fusioncrosschain-ipor_fusionhypercore)). Their exception classes
|
|
373
374
|
stay in `ipor_fusion.errors`, and the `vault info` document's HyperCore blocks
|
|
374
375
|
(`HyperCoreJson`, ...) stay with the document.
|
|
375
376
|
- **Third-party types** are not re-exported: import `ChecksumAddress` and
|
|
@@ -439,7 +440,10 @@ Fuse.method() --> FuseAction --> PlasmaVault.execute([actions]) --> Call
|
|
|
439
440
|
### Preview features (`ipor_fusion.crosschain`, `ipor_fusion.hypercore`)
|
|
440
441
|
|
|
441
442
|
Not production (see the note at the top) and outside the stable top level:
|
|
442
|
-
import these from their subpackage
|
|
443
|
+
import these from their subpackage. They track the current official contracts
|
|
444
|
+
only, with no backward compatibility: from 4.1 on, a minor release may change or
|
|
445
|
+
remove any of these names and drops support for retired deployments (such as
|
|
446
|
+
the pilot executors and factories). Pin an exact version if you depend on them.
|
|
443
447
|
|
|
444
448
|
| Name | Purpose |
|
|
445
449
|
|------|---------|
|
|
@@ -42,6 +42,7 @@ from ipor_fusion.core.erc20 import ERC20
|
|
|
42
42
|
from ipor_fusion.core.external_state_executor import (
|
|
43
43
|
BalanceFuseSnapshot,
|
|
44
44
|
BalanceProposal,
|
|
45
|
+
CustodianMarkerKind,
|
|
45
46
|
ExternalStateExecutor,
|
|
46
47
|
ExternalStateVaultState,
|
|
47
48
|
read_external_state,
|
|
@@ -545,6 +546,7 @@ __all__ = [
|
|
|
545
546
|
"CloneArgs",
|
|
546
547
|
"ExternalStateExecutor",
|
|
547
548
|
"BalanceFuseSnapshot",
|
|
549
|
+
"CustodianMarkerKind",
|
|
548
550
|
"ExternalStateVaultState",
|
|
549
551
|
"read_external_state",
|
|
550
552
|
"erc20_balance_slot",
|
|
@@ -41,7 +41,8 @@ PREVIEW_FEATURES: tuple[PreviewFeature, ...] = (
|
|
|
41
41
|
PREVIEW_STATEMENT = (
|
|
42
42
|
"Preview, not production: the contracts are under active development, the "
|
|
43
43
|
"mainnet deployments are a proof of concept and IPOR Labs canaries, and "
|
|
44
|
-
"interfaces may change between minor versions
|
|
44
|
+
"interfaces may change or be removed between minor versions, with no "
|
|
45
|
+
"backward compatibility."
|
|
45
46
|
)
|
|
46
47
|
|
|
47
48
|
_DISTRIBUTION = "ipor-fusion"
|
|
@@ -18,6 +18,7 @@ from ipor_fusion.core.erc20 import ERC20
|
|
|
18
18
|
from ipor_fusion.core.external_state_executor import (
|
|
19
19
|
BalanceFuseSnapshot,
|
|
20
20
|
BalanceProposal,
|
|
21
|
+
CustodianMarkerKind,
|
|
21
22
|
ExternalStateExecutor,
|
|
22
23
|
ExternalStateVaultState,
|
|
23
24
|
read_external_state,
|
|
@@ -122,6 +123,7 @@ __all__ = [
|
|
|
122
123
|
"BalanceFuseSnapshot",
|
|
123
124
|
"BalanceProposal",
|
|
124
125
|
"ExternalStateExecutor",
|
|
126
|
+
"CustodianMarkerKind",
|
|
125
127
|
"ExternalStateVaultState",
|
|
126
128
|
"read_external_state",
|
|
127
129
|
"Fuse",
|
|
@@ -18,13 +18,15 @@ from __future__ import annotations
|
|
|
18
18
|
|
|
19
19
|
from collections.abc import Iterable
|
|
20
20
|
from dataclasses import dataclass, replace
|
|
21
|
+
from enum import Enum
|
|
21
22
|
|
|
22
23
|
from eth_abi import decode, encode
|
|
23
24
|
from eth_abi.exceptions import DecodingError
|
|
24
25
|
from eth_typing import ChecksumAddress
|
|
25
|
-
from eth_utils import keccak
|
|
26
|
+
from eth_utils import function_signature_to_4byte_selector, keccak
|
|
26
27
|
from hexbytes import HexBytes
|
|
27
28
|
from web3 import Web3
|
|
29
|
+
from web3.exceptions import ContractLogicError
|
|
28
30
|
from web3.types import BlockIdentifier, Timestamp
|
|
29
31
|
|
|
30
32
|
from ipor_fusion.core.context import Web3Context
|
|
@@ -118,6 +120,35 @@ def _require_matching_hash(
|
|
|
118
120
|
)
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
class CustodianMarkerKind(Enum):
|
|
124
|
+
"""What an executor's custodian marker counts: the last confirmed update's
|
|
125
|
+
unix timestamp (executors before the 2026-10-21 contracts release) or the
|
|
126
|
+
number of confirmed updates (executors of that release)."""
|
|
127
|
+
|
|
128
|
+
TIMESTAMP = "timestamp"
|
|
129
|
+
CONFIRM_COUNT = "confirm_count"
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
_CONFIRM_COUNT_SELECTOR = function_signature_to_4byte_selector("confirmCount()")
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _read_marker_kind(
|
|
136
|
+
ctx: Web3Context, executor: ChecksumAddress, block: BlockIdentifier
|
|
137
|
+
) -> CustodianMarkerKind:
|
|
138
|
+
"""Decided from the executor, not guessed from a value: a released
|
|
139
|
+
executor answers ``confirmCount()``, an earlier one has no such function
|
|
140
|
+
and the call reverts. Any other failure raises."""
|
|
141
|
+
try:
|
|
142
|
+
raw = ctx.call(executor, _CONFIRM_COUNT_SELECTOR, block)
|
|
143
|
+
except ContractLogicError:
|
|
144
|
+
return CustodianMarkerKind.TIMESTAMP
|
|
145
|
+
if len(raw) != 32:
|
|
146
|
+
raise ExternalStateError(
|
|
147
|
+
f"confirmCount() of {executor} returned {len(raw)} bytes, not a uint256"
|
|
148
|
+
)
|
|
149
|
+
return CustodianMarkerKind.CONFIRM_COUNT
|
|
150
|
+
|
|
151
|
+
|
|
121
152
|
@dataclass(frozen=True, slots=True)
|
|
122
153
|
class ExternalStateVaultState:
|
|
123
154
|
"""The external-state market's vault-scoped state, read from the vault's
|
|
@@ -136,7 +167,9 @@ class ExternalStateVaultState:
|
|
|
136
167
|
and not the pre-hook's staleness clock, which is
|
|
137
168
|
`ExternalStateExecutor.get_oldest_update_timestamp`. The fuse and the
|
|
138
169
|
pre-hook only compare it for equality with
|
|
139
|
-
`BalanceFuseSnapshot.custodian_marker
|
|
170
|
+
`BalanceFuseSnapshot.custodian_marker`. `custodian_marker_kind` says
|
|
171
|
+
which, read from the executor at the same block (``None`` without an
|
|
172
|
+
executor); `paused` is the flag
|
|
140
173
|
the balance fuse sets on a big change and `ExternalStateUnpauseFuse` clears
|
|
141
174
|
with an atomist signature. `ExternalStatePausePreHook` blocks the vault's
|
|
142
175
|
gated user operations while the flag is set, and also, flag or not, while
|
|
@@ -148,6 +181,7 @@ class ExternalStateVaultState:
|
|
|
148
181
|
executor: ChecksumAddress | None
|
|
149
182
|
last_total_balance: Amount
|
|
150
183
|
last_checked_custodian_marker: CustodianMarker
|
|
184
|
+
custodian_marker_kind: CustodianMarkerKind | None
|
|
151
185
|
paused: bool
|
|
152
186
|
block: int
|
|
153
187
|
|
|
@@ -232,10 +266,14 @@ def read_external_state(
|
|
|
232
266
|
raise ExternalStateError(
|
|
233
267
|
f"malformed pause flag in the external-state storage of {checksum}"
|
|
234
268
|
)
|
|
269
|
+
executor = Web3.to_checksum_address(f"0x{words[0]:040x}") if words[0] else None
|
|
235
270
|
return ExternalStateVaultState(
|
|
236
|
-
executor=
|
|
271
|
+
executor=executor,
|
|
237
272
|
last_total_balance=Amount(words[1]),
|
|
238
273
|
last_checked_custodian_marker=CustodianMarker(words[2]),
|
|
274
|
+
custodian_marker_kind=(
|
|
275
|
+
_read_marker_kind(ctx, executor, read_at) if executor else None
|
|
276
|
+
),
|
|
239
277
|
paused=words[3] == 1,
|
|
240
278
|
block=block,
|
|
241
279
|
)
|
|
@@ -365,6 +403,11 @@ class ExternalStateExecutor(ContractWrapper):
|
|
|
365
403
|
)
|
|
366
404
|
)
|
|
367
405
|
|
|
406
|
+
def read_custodian_marker_kind(self, ctx: Web3Context) -> CustodianMarkerKind:
|
|
407
|
+
"""Whether this executor's custodian marker is a timestamp or a
|
|
408
|
+
confirm count, at ``ctx``'s default block (see `CustodianMarkerKind`)."""
|
|
409
|
+
return _read_marker_kind(ctx, self._require_address(), ctx.default_block)
|
|
410
|
+
|
|
368
411
|
def confirm_count(self) -> Call[CustodianMarker]:
|
|
369
412
|
"""Executors of the 2026-10-21 contracts release only: the count of
|
|
370
413
|
confirmed custodian updates across every balance account, the marker
|
|
@@ -1176,8 +1176,9 @@ class PreviewFeatureModel(_Base):
|
|
|
1176
1176
|
default="preview",
|
|
1177
1177
|
description="Always 'preview': not production. The contracts are under "
|
|
1178
1178
|
"active development, the mainnet deployments are a proof of concept "
|
|
1179
|
-
"and IPOR Labs canaries, and interfaces may change
|
|
1180
|
-
"versions
|
|
1179
|
+
"and IPOR Labs canaries, and interfaces may change or be removed "
|
|
1180
|
+
"between minor versions, with no backward compatibility. Route no "
|
|
1181
|
+
"production capital through these features.",
|
|
1181
1182
|
)
|
|
1182
1183
|
|
|
1183
1184
|
|
|
@@ -13,6 +13,7 @@ from eth_typing import ChecksumAddress
|
|
|
13
13
|
from eth_utils import keccak
|
|
14
14
|
from hexbytes import HexBytes
|
|
15
15
|
from web3 import Web3
|
|
16
|
+
from web3.exceptions import ContractLogicError
|
|
16
17
|
from web3.types import Timestamp
|
|
17
18
|
|
|
18
19
|
from ipor_fusion.core.external_state_executor import (
|
|
@@ -1182,8 +1183,12 @@ class TestReadExternalState:
|
|
|
1182
1183
|
BLOCKS = {"safe": 4_804_990, "finalized": 4_804_900, "earliest": 0}
|
|
1183
1184
|
HASH = "0x" + "ab" * 32
|
|
1184
1185
|
|
|
1185
|
-
def _ctx(self, words, default_block="latest", head=4_805_000):
|
|
1186
|
+
def _ctx(self, words, default_block="latest", head=4_805_000, confirm_count=None):
|
|
1186
1187
|
ctx = MagicMock()
|
|
1188
|
+
if confirm_count is None:
|
|
1189
|
+
ctx.call.side_effect = ContractLogicError("execution reverted")
|
|
1190
|
+
else:
|
|
1191
|
+
ctx.call.return_value = HexBytes(confirm_count.to_bytes(32, "big"))
|
|
1187
1192
|
ctx.default_block = default_block
|
|
1188
1193
|
blocks = dict(self.BLOCKS, latest=head)
|
|
1189
1194
|
blocks[self.HASH] = 4_700_123
|
|
@@ -1194,6 +1199,30 @@ class TestReadExternalState:
|
|
|
1194
1199
|
ctx.get_storage_at.side_effect = lambda vault, slot, block=None: by_slot[slot]
|
|
1195
1200
|
return ctx
|
|
1196
1201
|
|
|
1202
|
+
def test_the_marker_kind_is_read_from_the_executor_at_the_same_block(self):
|
|
1203
|
+
from ipor_fusion import CustodianMarkerKind, read_external_state
|
|
1204
|
+
|
|
1205
|
+
earlier = read_external_state(
|
|
1206
|
+
self._ctx([int(EXECUTOR_ADDR, 16), 1, 1_791_458_983, 0]), VAULT_ADDR
|
|
1207
|
+
)
|
|
1208
|
+
assert earlier.custodian_marker_kind is CustodianMarkerKind.TIMESTAMP
|
|
1209
|
+
ctx = self._ctx([int(EXECUTOR_ADDR, 16), 1, 7, 0], confirm_count=7)
|
|
1210
|
+
released = read_external_state(ctx, VAULT_ADDR)
|
|
1211
|
+
assert released.custodian_marker_kind is CustodianMarkerKind.CONFIRM_COUNT
|
|
1212
|
+
to, data, block = ctx.call.call_args.args
|
|
1213
|
+
assert data == Web3.keccak(text="confirmCount()")[:4]
|
|
1214
|
+
assert block == 4_805_000
|
|
1215
|
+
none = read_external_state(self._ctx([0, 0, 0, 0]), VAULT_ADDR)
|
|
1216
|
+
assert none.custodian_marker_kind is None
|
|
1217
|
+
|
|
1218
|
+
def test_a_failed_kind_read_raises(self):
|
|
1219
|
+
from ipor_fusion import read_external_state
|
|
1220
|
+
|
|
1221
|
+
ctx = self._ctx([int(EXECUTOR_ADDR, 16), 1, 7, 0])
|
|
1222
|
+
ctx.call.side_effect = ConnectionError("rpc down")
|
|
1223
|
+
with pytest.raises(ConnectionError):
|
|
1224
|
+
read_external_state(ctx, VAULT_ADDR)
|
|
1225
|
+
|
|
1197
1226
|
def test_reads_the_four_slots_at_one_resolved_block(self):
|
|
1198
1227
|
from ipor_fusion import read_external_state
|
|
1199
1228
|
|
|
@@ -153,6 +153,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
153
153
|
"ExternalStateTotalBalanceUpdatedArgs",
|
|
154
154
|
"ExternalStateUnpausedArgs",
|
|
155
155
|
"ExternalStateUnpausedEvent",
|
|
156
|
+
"CustodianMarkerKind",
|
|
156
157
|
"ExternalStateVaultState",
|
|
157
158
|
"Fee",
|
|
158
159
|
"FeeAccount",
|
|
@@ -531,6 +532,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
531
532
|
"CloneArgs",
|
|
532
533
|
"ERC20",
|
|
533
534
|
"ExternalStateExecutor",
|
|
535
|
+
"CustodianMarkerKind",
|
|
534
536
|
"ExternalStateVaultState",
|
|
535
537
|
"FeeAccount",
|
|
536
538
|
"FeeManager",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/examples/simple_aave_v3_supply_base.py
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
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_rendering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fusion_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev291 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/transport.py
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
|