ipor-fusion 4.1.0.dev42__tar.gz → 4.1.0.dev44__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.1.0.dev42 → ipor_fusion-4.1.0.dev44}/PKG-INFO +1 -1
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/pyproject.toml +1 -1
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/hypercore/__init__.py +2 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/hypercore.py +28 -4
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_readers.py +23 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_public_api.py +1 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.env.example +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.gemini/settings.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.gitignore +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/.python-version +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/AGENTS.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/CHANGELOG.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/CLAUDE.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/CODEOWNERS +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/LICENSE +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/README.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/build.sh +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/README.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/hypercore_vault_official_deployment_hyperevm.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/pytest.ini +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/scripts/fusion_error_signatures.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/fuse_decoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/hypercore_pre_hooks.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fusion_errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/preflight.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/euler_v2.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_addresses.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_event_args.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_foundry.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_golden.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_guide.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_live.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_multicall.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_simulate.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/_validation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/addresses.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/conftest.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/constants.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_about.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_addresses_helper.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cache.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_chains.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_preflight.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_examples_hypercore_hyperevm.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_fuse_decoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_fusion_errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_guide.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_pre_hooks.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_logs.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_preflight.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_preflight.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_registry.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_roles.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_examples_hyperevm.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_preflight_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_timelock_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_validation.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/uv.lock +0 -0
|
@@ -73,6 +73,7 @@ from ipor_fusion.readers.hypercore import (
|
|
|
73
73
|
USD6_DECIMALS,
|
|
74
74
|
HyperCoreAccountMarginSummary,
|
|
75
75
|
HyperCoreActionClass,
|
|
76
|
+
HyperCoreBbo,
|
|
76
77
|
HyperCoreEffectKind,
|
|
77
78
|
HyperCoreNav,
|
|
78
79
|
HyperCorePendingReader,
|
|
@@ -137,6 +138,7 @@ __all__ = [
|
|
|
137
138
|
"HyperCoreActionSettledArgs",
|
|
138
139
|
"HyperCoreActionSettledEvent",
|
|
139
140
|
"HyperCoreAsset",
|
|
141
|
+
"HyperCoreBbo",
|
|
140
142
|
"HyperCoreBuilderFeeFuse",
|
|
141
143
|
"HyperCoreBuilderFeeFuseEnterArgs",
|
|
142
144
|
"HyperCoreBuilderFeeFuseEnterEvent",
|
|
@@ -99,6 +99,7 @@ ORACLE_PX_PRECOMPILE = _precompile(0x807)
|
|
|
99
99
|
L1_BLOCK_NUMBER_PRECOMPILE = _precompile(0x809)
|
|
100
100
|
PERP_ASSET_INFO_PRECOMPILE = _precompile(0x80A)
|
|
101
101
|
TOKEN_INFO_PRECOMPILE = _precompile(0x80C)
|
|
102
|
+
BBO_PRECOMPILE = _precompile(0x80E)
|
|
102
103
|
ACCOUNT_MARGIN_SUMMARY_PRECOMPILE = _precompile(0x80F)
|
|
103
104
|
CORE_USER_EXISTS_PRECOMPILE = _precompile(0x810)
|
|
104
105
|
#: ``position2``: same layout as ``position`` (``0x800``), which reads indexes up
|
|
@@ -170,6 +171,15 @@ class HyperCorePerpAssetInfo:
|
|
|
170
171
|
only_isolated: bool
|
|
171
172
|
|
|
172
173
|
|
|
174
|
+
@dataclass(frozen=True, slots=True)
|
|
175
|
+
class HyperCoreBbo:
|
|
176
|
+
"""``bbo`` precompile result: the best bid and ask, ``None`` for an empty
|
|
177
|
+
side of the book, which the precompile answers as 0 (never a real price)."""
|
|
178
|
+
|
|
179
|
+
bid: int | None
|
|
180
|
+
ask: int | None
|
|
181
|
+
|
|
182
|
+
|
|
173
183
|
@dataclass(frozen=True, slots=True)
|
|
174
184
|
class HyperCorePosition:
|
|
175
185
|
"""``position`` precompile result; ``szi`` and ``isolated_raw_usd`` are
|
|
@@ -225,14 +235,19 @@ def _position(values: tuple[int, int, int, int, bool]) -> HyperCorePosition:
|
|
|
225
235
|
return HyperCorePosition(*values)
|
|
226
236
|
|
|
227
237
|
|
|
238
|
+
def _bbo(values: tuple[int, int]) -> HyperCoreBbo:
|
|
239
|
+
bid, ask = values
|
|
240
|
+
return HyperCoreBbo(bid=bid or None, ask=ask or None)
|
|
241
|
+
|
|
242
|
+
|
|
228
243
|
class HyperCoreReader:
|
|
229
244
|
"""The HyperCore read precompiles as :class:`Call`s.
|
|
230
245
|
|
|
231
|
-
Mirrors ``HyperCoreLib``'s reads: a precompile takes its
|
|
232
|
-
ABI-encoded words (no selector) and answers one
|
|
233
|
-
perp reads take the *read index* of a market
|
|
246
|
+
Mirrors ``HyperCoreLib``'s reads, plus :meth:`bbo`: a precompile takes its
|
|
247
|
+
arguments as raw ABI-encoded words (no selector) and answers one
|
|
248
|
+
ABI-encoded value. The perp reads take the *read index* of a market
|
|
234
249
|
(:func:`ipor_fusion.hypercore.precompile_index_of`: the action asset without the HIP-3
|
|
235
|
-
offset)
|
|
250
|
+
offset); only :meth:`bbo` takes the action asset itself.
|
|
236
251
|
"""
|
|
237
252
|
|
|
238
253
|
def _read(
|
|
@@ -329,6 +344,15 @@ class HyperCoreReader:
|
|
|
329
344
|
_validate_uint(read_index, 32, "read_index")
|
|
330
345
|
return self._read(MARK_PX_PRECOMPILE, ["uint32"], [read_index], ["uint64"])
|
|
331
346
|
|
|
347
|
+
def bbo(self, asset: HyperCoreAsset) -> Call[HyperCoreBbo]:
|
|
348
|
+
"""The best bid and ask of ``asset``, the action asset an order takes
|
|
349
|
+
(a HIP-3 read index answers another market's book). A perp's prices
|
|
350
|
+
have :func:`perp_px_decimals` decimals."""
|
|
351
|
+
_validate_uint(asset, 32, "asset")
|
|
352
|
+
return self._read(
|
|
353
|
+
BBO_PRECOMPILE, ["uint32"], [asset], ["uint64", "uint64"], _bbo
|
|
354
|
+
)
|
|
355
|
+
|
|
332
356
|
def l1_block_number(self) -> Call[int]:
|
|
333
357
|
return self._read(L1_BLOCK_NUMBER_PRECOMPILE, [], [], ["uint64"])
|
|
334
358
|
|
|
@@ -21,6 +21,7 @@ from ipor_fusion import (
|
|
|
21
21
|
)
|
|
22
22
|
from ipor_fusion.hypercore import (
|
|
23
23
|
HyperCoreActionClass,
|
|
24
|
+
HyperCoreBbo,
|
|
24
25
|
HyperCoreEffectKind,
|
|
25
26
|
HyperCoreNav,
|
|
26
27
|
HyperCorePendingReader,
|
|
@@ -152,11 +153,33 @@ class TestPrecompileCalls:
|
|
|
152
153
|
self.reader.core_user_exists(VAULT).decode(encode(["bool"], [True])) is True
|
|
153
154
|
)
|
|
154
155
|
|
|
156
|
+
def test_bbo_takes_the_action_asset(self):
|
|
157
|
+
call = self.reader.bbo(110_002)
|
|
158
|
+
# The literal, so a wrong BBO_PRECOMPILE fails.
|
|
159
|
+
assert call.to == Web3.to_checksum_address("0x" + "00" * 18 + "080e")
|
|
160
|
+
assert call.data == encode(["uint32"], [110_002])
|
|
161
|
+
bbo = call.decode(encode(["uint64", "uint64"], [213_750, 213_770]))
|
|
162
|
+
assert bbo == HyperCoreBbo(bid=213_750, ask=213_770)
|
|
163
|
+
|
|
164
|
+
def test_bbo_reads_an_empty_side_as_none(self):
|
|
165
|
+
empty_ask = self.reader.bbo(10_200).decode(
|
|
166
|
+
encode(["uint64", "uint64"], [18_700_000, 0])
|
|
167
|
+
)
|
|
168
|
+
assert empty_ask == HyperCoreBbo(bid=18_700_000, ask=None)
|
|
169
|
+
empty_bid = self.reader.bbo(10_200).decode(
|
|
170
|
+
encode(["uint64", "uint64"], [0, 18_800_000])
|
|
171
|
+
)
|
|
172
|
+
assert empty_bid == HyperCoreBbo(bid=None, ask=18_800_000)
|
|
173
|
+
empty = self.reader.bbo(10_220).decode(encode(["uint64", "uint64"], [0, 0]))
|
|
174
|
+
assert empty == HyperCoreBbo(bid=None, ask=None)
|
|
175
|
+
|
|
155
176
|
def test_arguments_are_width_checked(self):
|
|
156
177
|
with pytest.raises(ValueError, match="uint64"):
|
|
157
178
|
self.reader.spot_balance(VAULT, 1 << 64)
|
|
158
179
|
with pytest.raises(ValueError, match="uint32"):
|
|
159
180
|
self.reader.perp_asset_info(1 << 32)
|
|
181
|
+
with pytest.raises(ValueError, match="uint32"):
|
|
182
|
+
self.reader.bbo(1 << 32)
|
|
160
183
|
|
|
161
184
|
|
|
162
185
|
USDC = Web3.to_checksum_address("0xb88339cb7199b77e23db6e890353e22632ba630f")
|
|
@@ -467,6 +467,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
467
467
|
"HyperCoreActionSettledArgs",
|
|
468
468
|
"HyperCoreActionSettledEvent",
|
|
469
469
|
"HyperCoreAsset",
|
|
470
|
+
"HyperCoreBbo",
|
|
470
471
|
"HyperCoreBuilderFeeFuse",
|
|
471
472
|
"HyperCoreBuilderFeeFuseEnterArgs",
|
|
472
473
|
"HyperCoreBuilderFeeFuseEnterEvent",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/advanced_euler_v2_credit_market_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/examples/external_state_margin_leg_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
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/cli/vault_markets_view.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
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/external_state_executor.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
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/layerzero.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/crosschain/stargate/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/fluid_instadapp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/fuses/hypercore_pre_hooks.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
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/hypercore_outcome.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/lending_health.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping_nodes.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/oracle_mapping_reader.py
RENAMED
|
File without changes
|
{ipor_fusion-4.1.0.dev42 → ipor_fusion-4.1.0.dev44}/src/ipor_fusion/readers/position_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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|