ipor-fusion 4.0.0.dev325__tar.gz → 4.0.0.dev327__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.dev325 → ipor_fusion-4.0.0.dev327}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/base.py +4 -4
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_ids.py +1 -4
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/substrates.py +3 -12
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_lifecycle.py +1 -1
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_encoding.py +12 -8
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/README.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/hypercore_vault_official_deployment_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/scripts/fusion_error_signatures.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/preflight.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_examples_hypercore_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_preflight_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_timelock_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/uv.lock +0 -0
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
@@ -7,10 +7,10 @@ exist and each has its own supply and command fuse (``stargate`` and ``ccip``
|
|
|
7
7
|
next to this module); the claim fuse and the substrates are shared. Names,
|
|
8
8
|
methods and parameters follow ``contracts/fuses/crosschain/**``.
|
|
9
9
|
|
|
10
|
-
Every fuse is bound to one market id at construction (``MARKET_ID``)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
Every fuse is bound to one market id at construction (``MARKET_ID``). The
|
|
11
|
+
released deployment uses ``IporFusionMarkets.CROSSCHAIN`` (54); a fuse built
|
|
12
|
+
with another id (see :func:`crosschain_market_id`) is still addressed by it, so
|
|
13
|
+
the market id is a parameter here, never an assumption.
|
|
14
14
|
|
|
15
15
|
``CrosschainSupplyFuse`` and ``CrosschainCommandFuse`` are the SDK's
|
|
16
16
|
transport-agnostic layer (the contracts have none): the operations both
|
|
@@ -99,10 +99,7 @@ class IporFusionMarkets:
|
|
|
99
99
|
# Crosschain market: a hub PlasmaVault deploys capital into PlasmaVaults
|
|
100
100
|
# on other chains through an executor (Stargate/LayerZero or Chainlink
|
|
101
101
|
# CCIP). Substrate type: CrosschainSubstrateLib (1 EXECUTOR, 2 REMOTE_VAULT
|
|
102
|
-
# bound to a chain id).
|
|
103
|
-
# crosschain feature branch; the mirror test allowlists it until it lands.
|
|
104
|
-
# The mainnet POC fuses were built with a keccak-derived id instead (see
|
|
105
|
-
# ipor_fusion.crosschain.fuses.crosschain_market_id).
|
|
102
|
+
# bound to a chain id).
|
|
106
103
|
# A legacy HyperEVM HyperCore test vault also uses 54 until it is
|
|
107
104
|
# redeployed on HyperCore's assigned market 55; do not interpret that
|
|
108
105
|
# vault's market-54 substrates as crosschain configuration.
|
|
@@ -16,7 +16,6 @@ from collections.abc import Callable
|
|
|
16
16
|
from dataclasses import dataclass, field
|
|
17
17
|
|
|
18
18
|
from eth_typing import HexAddress
|
|
19
|
-
from eth_utils import keccak
|
|
20
19
|
|
|
21
20
|
from ipor_fusion.fuses.hypercore import (
|
|
22
21
|
is_hip3_asset,
|
|
@@ -634,17 +633,9 @@ _register_markets([40], _decode_async_action)
|
|
|
634
633
|
_register_markets([50], _decode_external_state)
|
|
635
634
|
# Uniswap V4 (id 53 per IporFusionMarkets.sol): PoolId or pool currency.
|
|
636
635
|
_register_markets([53], _decode_uniswap_v4)
|
|
637
|
-
# Crosschain (
|
|
638
|
-
#
|
|
639
|
-
|
|
640
|
-
# keccak-derived market id its fuses were built with, so that id decodes too.
|
|
641
|
-
_register_markets(
|
|
642
|
-
[
|
|
643
|
-
54,
|
|
644
|
-
int.from_bytes(keccak(text="IPOR_FUSION_CROSSCHAIN_USDC_POC_V1"), "big"),
|
|
645
|
-
],
|
|
646
|
-
_decode_crosschain,
|
|
647
|
-
)
|
|
636
|
+
# Crosschain (54): EXECUTOR / REMOTE_VAULT typed substrates per
|
|
637
|
+
# CrosschainSubstrateLib.sol.
|
|
638
|
+
_register_markets([54], _decode_crosschain)
|
|
648
639
|
# HyperCore (55): typed substrates per HyperCoreSubstrateLib.sol, verified
|
|
649
640
|
# against the 12 words granted on the first HyperEVM test vault (see
|
|
650
641
|
# tests/fixtures/hypercore_hip3_flow.json; that run used id 54 before the
|
|
@@ -70,7 +70,7 @@ SUPPLY_AMOUNT = {
|
|
|
70
70
|
NATIVE_BUDGET = 10**18 # executor and dispatcher pay bridge fees themselves
|
|
71
71
|
|
|
72
72
|
# Simulated schedule. The freshness window itself (``staleness_max``, 1 h on
|
|
73
|
-
# the
|
|
73
|
+
# the released executors) is read from the lane; MIN_UPDATE_INTERVAL is 60 s and a
|
|
74
74
|
# proposal needs a 15 min approval window.
|
|
75
75
|
BRIDGE_LATENCY = 2 * 60
|
|
76
76
|
APPROVAL_DELAY = 5 * 60
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"""Offline tests for the crosschain fuses, substrates and wire codecs.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
read on 2026-09-24) and the well-known LayerZero option blobs.
|
|
3
|
+
Fixtures: substrate words in the CrosschainSubstrateLib layout, as granted on
|
|
4
|
+
a mainnet vault on 2026-09-24, and the well-known LayerZero option blobs.
|
|
6
5
|
"""
|
|
7
6
|
|
|
8
7
|
from __future__ import annotations
|
|
@@ -79,7 +78,7 @@ WITHDRAW_MANAGER = Web3.to_checksum_address(
|
|
|
79
78
|
)
|
|
80
79
|
RECEIVER = Web3.to_checksum_address("0x3333333333333333333333333333333333333333")
|
|
81
80
|
|
|
82
|
-
#
|
|
81
|
+
# Granted substrate words: one EXECUTOR and two chain-bound REMOTE_VAULTs.
|
|
83
82
|
LIVE_EXECUTOR_SUBSTRATE = (
|
|
84
83
|
"0x0100000000000000000000001d5c9d44f8d556ec7f557ae992401cc770937e6e"
|
|
85
84
|
)
|
|
@@ -89,7 +88,6 @@ LIVE_REMOTE_VAULT_BASE = (
|
|
|
89
88
|
LIVE_REMOTE_VAULT_ARB = (
|
|
90
89
|
"0x02000000000000000000a4b1174bfa12935ac416caa7d27397bd4f3b15175980"
|
|
91
90
|
)
|
|
92
|
-
POC_MARKET_ID = crosschain_market_id("IPOR_FUSION_CROSSCHAIN_USDC_POC_V1")
|
|
93
91
|
|
|
94
92
|
|
|
95
93
|
def _decoded(action, signature: str) -> tuple:
|
|
@@ -249,7 +247,7 @@ class TestCrosschainSubstrateLib:
|
|
|
249
247
|
assert info.type_label == "EXECUTOR"
|
|
250
248
|
assert info.address == EXECUTOR.lower()
|
|
251
249
|
assert info.extra == {}
|
|
252
|
-
info = decode_substrate(LIVE_REMOTE_VAULT_BASE, market_id=
|
|
250
|
+
info = decode_substrate(LIVE_REMOTE_VAULT_BASE, market_id=54)
|
|
253
251
|
assert info.type_label == "REMOTE_VAULT"
|
|
254
252
|
assert info.address == REMOTE_VAULT_BASE.lower()
|
|
255
253
|
assert info.extra == {"chain_id": "8453"}
|
|
@@ -279,11 +277,17 @@ class TestCrosschainSubstrateLib:
|
|
|
279
277
|
assert info.is_error is True
|
|
280
278
|
assert info.extra == {"chain_id": str(substrate.chain_id)}
|
|
281
279
|
|
|
282
|
-
def
|
|
283
|
-
assert
|
|
280
|
+
def test_crosschain_market_id_is_the_keccak_of_its_preimage(self):
|
|
281
|
+
assert crosschain_market_id("IPOR_FUSION_CROSSCHAIN_USDC_POC_V1") == int(
|
|
284
282
|
"0x3698b2215fdb7b90ebd6e623939afe7a334e14147954f78e1a42ddcbcbc9b576", 16
|
|
285
283
|
)
|
|
286
284
|
|
|
285
|
+
def test_only_the_canonical_crosschain_market_decodes(self):
|
|
286
|
+
market = crosschain_market_id("IPOR_FUSION_CROSSCHAIN_USDC_POC_V1")
|
|
287
|
+
info = decode_substrate(LIVE_REMOTE_VAULT_BASE, market_id=market)
|
|
288
|
+
assert info.type_label == "no_decoder(UNKNOWN)"
|
|
289
|
+
assert info.address is None
|
|
290
|
+
|
|
287
291
|
|
|
288
292
|
# ── Fuses ──────────────────────────────────────────────────────────────────
|
|
289
293
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev325 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/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
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/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
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/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
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/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.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/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
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/fluid_instadapp.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/compound_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore_outcome.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/lending_health.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/position_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev325 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/unpriceable.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
|