ipor-fusion 4.0.0.dev319__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.dev319 → ipor_fusion-4.0.0.dev327}/AGENTS.md +5 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/PKG-INFO +16 -1
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/README.md +15 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/README.md +26 -0
- ipor_fusion-4.0.0.dev327/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +1460 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/hypercore_vault_official_deployment_hyperevm.py +5 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/base.py +4 -4
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_ids.py +1 -4
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/substrates.py +3 -12
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_lifecycle.py +1 -1
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_encoding.py +12 -8
- ipor_fusion-4.0.0.dev327/tests/test_examples_crosschain.py +312 -0
- ipor_fusion-4.0.0.dev327/tests/test_simulate_examples_crosschain.py +164 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/scripts/fusion_error_signatures.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/preflight.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_hypercore_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_preflight_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_timelock_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/uv.lock +0 -0
|
@@ -79,6 +79,11 @@ supports only that release, so there is no live-pair generation. It needs
|
|
|
79
79
|
`IPOR_FUSION_CONTRACTS_DIR` at that revision; a checkout without `node_modules` also
|
|
80
80
|
needs `IPOR_FUSION_FOUNDRY_REMAPPINGS` for OpenZeppelin. `test_crosschain_ccip_events.py`
|
|
81
81
|
mirrors the CCIP event registry from a checkout at its own `CONTRACTS_REVISION`.
|
|
82
|
+
`test_simulate_examples_crosschain.py` runs the crosschain example against the deployed
|
|
83
|
+
(unconfigured) release factory and fuses: it builds the executor and dispatcher creation
|
|
84
|
+
codes from the same checkout, linked against the example's `RELEASE_LIBRARIES`, proves the
|
|
85
|
+
deployed runtimes are that build, and needs `ARBITRUM_PROVIDER_URL`,
|
|
86
|
+
`HYPEREVM_PROVIDER_URL` and `IPOR_FUSION_CONTRACTS_DIR` (a missing one is an `_live` skip).
|
|
82
87
|
`test_solidity_compiler.py` unit-tests that compiler helper (`tests/_foundry.py`)
|
|
83
88
|
offline, with `forge` and `git` mocked. The checkout-based tests above skip when their
|
|
84
89
|
external prerequisites are unavailable. `test_hypercore_live.py`,
|
|
@@ -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.dev327
|
|
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
|
|
@@ -392,6 +392,10 @@ ever signed or broadcast.
|
|
|
392
392
|
- [External-state margin leg](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/external_state_margin_leg_base.py) — a vault whose capital
|
|
393
393
|
sits off-chain: typed market-50 substrates, a dual-custodian propose/confirm marking the NAV,
|
|
394
394
|
the scheduled-withdrawal prep an alpha performs, and a mismatched confirmation being rejected.
|
|
395
|
+
- [Crosschain CCIP vault, Arbitrum hub and HyperEVM spoke](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py) —
|
|
396
|
+
the released crosschain contracts as deployed: configure the CCIP factory pair as its owner,
|
|
397
|
+
create both vaults and the executor, wire the crosschain market and NAV pre-hook, deploy the
|
|
398
|
+
dispatcher, then supply → attest → DEPOSIT → REDEEM → recall → claim USDC (preview feature).
|
|
395
399
|
- [HyperCore vault on the official deployment](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/hypercore_vault_official_deployment_hyperevm.py) —
|
|
396
400
|
a HyperEVM vault that trades on Hyperliquid Core (market 55, preview): wiring the published
|
|
397
401
|
HyperCore fuses, pre-hooks and grants on a factory clone, and building the Core leg (bridge,
|
|
@@ -404,6 +408,17 @@ uv run python examples/advanced_euler_v2_credit_market_base.py
|
|
|
404
408
|
uv run python examples/external_state_margin_leg_base.py
|
|
405
409
|
```
|
|
406
410
|
|
|
411
|
+
The crosschain example needs Arbitrum and HyperEVM archive RPCs and the executor and dispatcher
|
|
412
|
+
creation codes built with Foundry from the contracts release it pins; run without them, it prints
|
|
413
|
+
the `forge inspect` commands that build them:
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
export ARBITRUM_PROVIDER_URL="https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY"
|
|
417
|
+
export HYPEREVM_PROVIDER_URL="https://YOUR_HYPEREVM_ARCHIVE_NODE"
|
|
418
|
+
export CCIP_EXECUTOR_CREATION_CODE_FILE=executor.hex CCIP_DISPATCHER_CREATION_CODE_FILE=dispatcher.hex
|
|
419
|
+
uv run python examples/crosschain_ccip_usdc_arbitrum_hyperevm.py
|
|
420
|
+
```
|
|
421
|
+
|
|
407
422
|
No RPC key? `BASE_PROVIDER_URL=https://mainnet.base.org` (Base's public RPC) runs the examples out of
|
|
408
423
|
the box — it supports `eth_simulateV1` and serves their pinned blocks. It is rate-limited, so use a
|
|
409
424
|
dedicated archive node for repeated or CI runs.
|
|
@@ -343,6 +343,10 @@ ever signed or broadcast.
|
|
|
343
343
|
- [External-state margin leg](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/external_state_margin_leg_base.py) — a vault whose capital
|
|
344
344
|
sits off-chain: typed market-50 substrates, a dual-custodian propose/confirm marking the NAV,
|
|
345
345
|
the scheduled-withdrawal prep an alpha performs, and a mismatched confirmation being rejected.
|
|
346
|
+
- [Crosschain CCIP vault, Arbitrum hub and HyperEVM spoke](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py) —
|
|
347
|
+
the released crosschain contracts as deployed: configure the CCIP factory pair as its owner,
|
|
348
|
+
create both vaults and the executor, wire the crosschain market and NAV pre-hook, deploy the
|
|
349
|
+
dispatcher, then supply → attest → DEPOSIT → REDEEM → recall → claim USDC (preview feature).
|
|
346
350
|
- [HyperCore vault on the official deployment](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/hypercore_vault_official_deployment_hyperevm.py) —
|
|
347
351
|
a HyperEVM vault that trades on Hyperliquid Core (market 55, preview): wiring the published
|
|
348
352
|
HyperCore fuses, pre-hooks and grants on a factory clone, and building the Core leg (bridge,
|
|
@@ -355,6 +359,17 @@ uv run python examples/advanced_euler_v2_credit_market_base.py
|
|
|
355
359
|
uv run python examples/external_state_margin_leg_base.py
|
|
356
360
|
```
|
|
357
361
|
|
|
362
|
+
The crosschain example needs Arbitrum and HyperEVM archive RPCs and the executor and dispatcher
|
|
363
|
+
creation codes built with Foundry from the contracts release it pins; run without them, it prints
|
|
364
|
+
the `forge inspect` commands that build them:
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
export ARBITRUM_PROVIDER_URL="https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY"
|
|
368
|
+
export HYPEREVM_PROVIDER_URL="https://YOUR_HYPEREVM_ARCHIVE_NODE"
|
|
369
|
+
export CCIP_EXECUTOR_CREATION_CODE_FILE=executor.hex CCIP_DISPATCHER_CREATION_CODE_FILE=dispatcher.hex
|
|
370
|
+
uv run python examples/crosschain_ccip_usdc_arbitrum_hyperevm.py
|
|
371
|
+
```
|
|
372
|
+
|
|
358
373
|
No RPC key? `BASE_PROVIDER_URL=https://mainnet.base.org` (Base's public RPC) runs the examples out of
|
|
359
374
|
the box — it supports `eth_simulateV1` and serves their pinned blocks. It is rate-limited, so use a
|
|
360
375
|
dedicated archive node for repeated or CI runs.
|
|
@@ -38,6 +38,17 @@ transaction.
|
|
|
38
38
|
brings the margin home and releases it for a user's scheduled withdrawal, then
|
|
39
39
|
demonstrates the executor rejecting a confirmation that does not match its
|
|
40
40
|
proposal.
|
|
41
|
+
- [`crosschain_ccip_usdc_arbitrum_hyperevm.py`](crosschain_ccip_usdc_arbitrum_hyperevm.py) --
|
|
42
|
+
a crosschain vault on the released CCIP contracts as they are deployed: an
|
|
43
|
+
Arbitrum hub vault, a HyperEVM spoke vault and USDC over Chainlink CCIP. It
|
|
44
|
+
configures the deployed (unconfigured) factory pair as its owner would --
|
|
45
|
+
creation codes, asset, route, dispatcher deployment gas limit through the
|
|
46
|
+
factory's 24 h timelock, the creator allowlist -- creates both vaults and the
|
|
47
|
+
executor, wires the crosschain market (the four fuses, the executor and
|
|
48
|
+
spoke-vault substrates, the NAV pre-hook), deploys the dispatcher through the
|
|
49
|
+
factory's deployment ticket, then drives supply, two-key attestation, DEPOSIT,
|
|
50
|
+
REDEEM, recall and claim. The crosschain SDK is a preview feature. It has
|
|
51
|
+
extra prerequisites, listed below.
|
|
41
52
|
- [`hypercore_vault_official_deployment_hyperevm.py`](hypercore_vault_official_deployment_hyperevm.py) --
|
|
42
53
|
a vault that is itself a Hyperliquid Core account (HyperCore, market 55; a
|
|
43
54
|
preview feature). No live vault uses the official HyperCore contracts yet, so
|
|
@@ -69,6 +80,21 @@ transaction.
|
|
|
69
80
|
your Arbitrum archive RPC endpoint. Never commit it or share it.
|
|
70
81
|
- `HYPEREVM_PROVIDER_URL` (required by the crosschain example) -- your HyperEVM
|
|
71
82
|
archive RPC endpoint. Never commit it or share it.
|
|
83
|
+
- `CCIP_EXECUTOR_CREATION_CODE_FILE` and `CCIP_DISPATCHER_CREATION_CODE_FILE`
|
|
84
|
+
(required by the crosschain example) -- files holding the hex creation code of
|
|
85
|
+
`CcipCrosschainExecutor` and `CcipCrosschainDispatcher`, built with Foundry
|
|
86
|
+
(`forge`) in a checkout of
|
|
87
|
+
[ipor-fusion](https://github.com/IPOR-Labs/ipor-fusion) at the release commit
|
|
88
|
+
the example pins (`RELEASE_COMMIT`), after `npm ci`. Run the example without
|
|
89
|
+
them and it prints the two `forge inspect` commands, which link the deployed
|
|
90
|
+
release libraries; it refuses codes whose hashes differ from the release's.
|
|
91
|
+
|
|
92
|
+
The crosschain example's own test (`tests/test_simulate_examples_crosschain.py`)
|
|
93
|
+
builds those codes itself, so it needs `ARBITRUM_PROVIDER_URL`,
|
|
94
|
+
`HYPEREVM_PROVIDER_URL`, `forge` and `IPOR_FUSION_CONTRACTS_DIR` -- that checkout
|
|
95
|
+
-- (plus `IPOR_FUSION_FOUNDRY_REMAPPINGS` when it has no `node_modules`). Pull
|
|
96
|
+
request CI supplies neither the HyperEVM RPC nor the checkout, so it skips there;
|
|
97
|
+
run it locally.
|
|
72
98
|
|
|
73
99
|
## Running
|
|
74
100
|
|