ipor-fusion 4.0.0.dev272__tar.gz → 4.0.0.dev274__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.dev272 → ipor_fusion-4.0.0.dev274}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/hypercore.py +71 -28
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_deployment.py +0 -6
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_live.py +16 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_readers.py +65 -27
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/README.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/scripts/crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_crosschain_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/uv.lock +0 -0
|
@@ -30,7 +30,7 @@ from dataclasses import dataclass
|
|
|
30
30
|
from enum import IntEnum
|
|
31
31
|
from typing import TypeVar
|
|
32
32
|
|
|
33
|
-
from eth_abi import encode
|
|
33
|
+
from eth_abi import decode, encode
|
|
34
34
|
from eth_typing import ChecksumAddress
|
|
35
35
|
from eth_utils import function_signature_to_4byte_selector
|
|
36
36
|
from web3 import Web3
|
|
@@ -41,7 +41,7 @@ from ipor_fusion.core.contract import Call
|
|
|
41
41
|
from ipor_fusion.core.multicall import Multicall3
|
|
42
42
|
from ipor_fusion.core.oracle import PriceOracleMiddleware
|
|
43
43
|
from ipor_fusion.core.plasma_vault import PlasmaVault
|
|
44
|
-
from ipor_fusion.errors import HyperCoreValuationError
|
|
44
|
+
from ipor_fusion.errors import HyperCoreValuationError, UnsupportedContractVersionError
|
|
45
45
|
from ipor_fusion.fuses.hypercore import (
|
|
46
46
|
NATIVE_PERP_DEX,
|
|
47
47
|
SUPPORTED_HIP3_DEXES,
|
|
@@ -71,13 +71,17 @@ T = TypeVar("T")
|
|
|
71
71
|
HYPERCORE_MARKET = IporFusionMarkets.HYPERCORE
|
|
72
72
|
#: The only chain with the HyperCore precompiles.
|
|
73
73
|
HYPEREVM_CHAIN_ID = ChainId(999)
|
|
74
|
-
#:
|
|
75
|
-
#:
|
|
76
|
-
#:
|
|
77
|
-
#:
|
|
74
|
+
#: The ``HyperCorePendingReader`` ``ipor-abi`` lists per chain. The reader
|
|
75
|
+
#: runs the pending-action library in the vault's storage, so it must come from
|
|
76
|
+
#: the build of the vault's HyperCore fuses and pre-hooks. A vault deployed
|
|
77
|
+
#: before that build (the HyperEVM market-55 vault
|
|
78
|
+
#: ``0xB8De01Ca5ca57A14671E1c696337134a02B4A478``) needs its own reader,
|
|
79
|
+
#: ``0x83F54bc9eA4Dd19cb579Daa70368562C7a7534C4``, passed explicitly: the current
|
|
80
|
+
#: one reads its storage the same but settles its reported-mode orders by time
|
|
81
|
+
#: alone.
|
|
78
82
|
HYPERCORE_PENDING_READERS: dict[ChainId, ChecksumAddress] = {
|
|
79
83
|
HYPEREVM_CHAIN_ID: Web3.to_checksum_address(
|
|
80
|
-
"
|
|
84
|
+
"0x1EFFb12434f5fb59a636C54D8CBaC93b13DF1A9E"
|
|
81
85
|
),
|
|
82
86
|
}
|
|
83
87
|
WAD_DECIMALS = 18
|
|
@@ -363,22 +367,58 @@ class HyperCorePendingState:
|
|
|
363
367
|
l1_block_available: bool
|
|
364
368
|
|
|
365
369
|
|
|
366
|
-
|
|
367
|
-
|
|
370
|
+
_PENDING_ACTION_PREFIX = (
|
|
371
|
+
"uint64,uint64,uint64,uint8,uint8,uint8,uint64,uint24,bytes32,bool,uint256,uint256"
|
|
372
|
+
)
|
|
373
|
+
_PENDING_ACTION_TYPE = (
|
|
374
|
+
f"({_PENDING_ACTION_PREFIX},uint8,uint64,address,uint64,uint256,uint64)"
|
|
375
|
+
)
|
|
376
|
+
#: ``pendingState()`` of the current reader.
|
|
377
|
+
PENDING_STATE_TYPE = f"({_PENDING_ACTION_TYPE},bool,bool,uint64,uint64,bool)"
|
|
378
|
+
#: ``pendingState()`` of the earlier reader: the 12-field struct and a
|
|
379
|
+
#: ``refreshing`` predicate. Both tuples are static, so the payload length
|
|
380
|
+
#: tells the two apart.
|
|
381
|
+
LEGACY_PENDING_STATE_TYPE = (
|
|
382
|
+
f"(({_PENDING_ACTION_PREFIX}),bool,bool,bool,uint64,uint64,bool)"
|
|
383
|
+
)
|
|
384
|
+
_PENDING_STATE_SIZE = 23 * 32
|
|
385
|
+
_LEGACY_PENDING_STATE_SIZE = 18 * 32
|
|
368
386
|
_PENDING_STATE_SELECTOR = function_signature_to_4byte_selector("pendingState()")
|
|
369
|
-
_IS_PENDING_SELECTOR = function_signature_to_4byte_selector("isPending()")
|
|
370
387
|
|
|
371
388
|
|
|
372
389
|
# pendingUntil, enqueuedL1Block, enqueuedEvmBlock, actionClass, settlementMode,
|
|
373
390
|
# reportedResult, resultL1Block, actionId, payloadHash, stateRefreshing,
|
|
374
|
-
# cachedValueWad, actionNonce.
|
|
391
|
+
# cachedValueWad, actionNonce: the struct prefix both readers share.
|
|
375
392
|
_PendingAction = tuple[int, int, int, int, int, int, int, int, bytes, bool, int, int]
|
|
376
393
|
|
|
377
394
|
|
|
378
|
-
def
|
|
379
|
-
|
|
395
|
+
def _decode_pending_payload(data: bytes) -> HyperCorePendingState:
|
|
396
|
+
if len(data) == _PENDING_STATE_SIZE:
|
|
397
|
+
state, pending, settled, l1_block, timestamp, l1_available = decode(
|
|
398
|
+
[PENDING_STATE_TYPE], data
|
|
399
|
+
)[0]
|
|
400
|
+
refreshing = False
|
|
401
|
+
elif len(data) == _LEGACY_PENDING_STATE_SIZE:
|
|
402
|
+
state, pending, settled, refreshing, l1_block, timestamp, l1_available = decode(
|
|
403
|
+
[LEGACY_PENDING_STATE_TYPE], data
|
|
404
|
+
)[0]
|
|
405
|
+
else:
|
|
406
|
+
raise UnsupportedContractVersionError(
|
|
407
|
+
f"HyperCorePendingReader.pendingState() returned {len(data)} bytes, "
|
|
408
|
+
f"not {_PENDING_STATE_SIZE} or {_LEGACY_PENDING_STATE_SIZE}"
|
|
409
|
+
)
|
|
410
|
+
return _pending_state(
|
|
411
|
+
state[:12],
|
|
412
|
+
(bool(pending), bool(settled), bool(refreshing)),
|
|
413
|
+
(l1_block, timestamp, bool(l1_available)),
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
def _pending_state(
|
|
418
|
+
state: _PendingAction,
|
|
419
|
+
predicates: tuple[bool, bool, bool],
|
|
420
|
+
l1: tuple[int, int, bool],
|
|
380
421
|
) -> HyperCorePendingState:
|
|
381
|
-
state, pending, settled, refreshing, l1_block, timestamp, l1_available = values
|
|
382
422
|
(
|
|
383
423
|
pending_until,
|
|
384
424
|
enqueued_l1_block,
|
|
@@ -393,6 +433,8 @@ def _decode_pending_state(
|
|
|
393
433
|
cached_value_wad,
|
|
394
434
|
action_nonce,
|
|
395
435
|
) = state
|
|
436
|
+
pending, settled, refreshing = predicates
|
|
437
|
+
l1_block, timestamp, l1_available = l1
|
|
396
438
|
return HyperCorePendingState(
|
|
397
439
|
pending_until=Timestamp(pending_until),
|
|
398
440
|
enqueued_l1_block=enqueued_l1_block,
|
|
@@ -403,22 +445,23 @@ def _decode_pending_state(
|
|
|
403
445
|
result_l1_block=result_l1_block,
|
|
404
446
|
action_id=HyperCoreActionId(action_id),
|
|
405
447
|
payload_hash=PayloadHash(bytes(payload_hash)),
|
|
406
|
-
refreshing=
|
|
448
|
+
refreshing=refreshing or bool(state_refreshing),
|
|
407
449
|
cached_value_wad=cached_value_wad,
|
|
408
450
|
action_nonce=action_nonce,
|
|
409
|
-
pending=
|
|
410
|
-
settled=
|
|
451
|
+
pending=pending,
|
|
452
|
+
settled=settled,
|
|
411
453
|
current_l1_block=l1_block,
|
|
412
454
|
current_timestamp=Timestamp(timestamp),
|
|
413
|
-
l1_block_available=
|
|
455
|
+
l1_block_available=l1_available,
|
|
414
456
|
)
|
|
415
457
|
|
|
416
458
|
|
|
417
459
|
class HyperCorePendingReader:
|
|
418
460
|
"""``HyperCorePendingReader`` through the vault's ``UniversalReader``.
|
|
419
461
|
|
|
420
|
-
``reader`` is the deployed helper
|
|
421
|
-
|
|
462
|
+
``reader`` is the deployed helper from the vault's build (never called
|
|
463
|
+
directly; see :data:`HYPERCORE_PENDING_READERS`); the vault delegatecalls
|
|
464
|
+
it so it sees the vault's pending slot. Keepers
|
|
422
465
|
gate every action on :meth:`is_pending`: the pending-action pre-hook
|
|
423
466
|
reverts ``execute`` and ``updateMarketsBalances`` while it is true.
|
|
424
467
|
"""
|
|
@@ -428,17 +471,17 @@ class HyperCorePendingReader:
|
|
|
428
471
|
self._reader = reader
|
|
429
472
|
|
|
430
473
|
def pending_state(self) -> Call[HyperCorePendingState]:
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
decoder=_decode_pending_state,
|
|
474
|
+
"""``pendingState()`` of either reader build, told apart by the
|
|
475
|
+
payload length."""
|
|
476
|
+
return self._vault.universal_read(self._reader, _PENDING_STATE_SELECTOR).map(
|
|
477
|
+
_decode_pending_payload
|
|
436
478
|
)
|
|
437
479
|
|
|
438
480
|
def is_pending(self) -> Call[bool]:
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
)
|
|
481
|
+
"""The ``pending`` predicate of :meth:`pending_state`: the readers
|
|
482
|
+
name the standalone getter differently (``isPending()`` /
|
|
483
|
+
``isActionPending()``)."""
|
|
484
|
+
return self.pending_state().map(lambda state: state.pending)
|
|
442
485
|
|
|
443
486
|
|
|
444
487
|
def convert_to_wad_int(value: int, decimals: int) -> int:
|
|
@@ -10,7 +10,6 @@ from web3 import Web3
|
|
|
10
10
|
from ipor_fusion import PlasmaVault
|
|
11
11
|
from ipor_fusion.core.context import Web3Context
|
|
12
12
|
from ipor_fusion.hypercore import HyperCoreSubstrates
|
|
13
|
-
from ipor_fusion.readers.hypercore import HYPERCORE_PENDING_READERS
|
|
14
13
|
from ipor_fusion.types import MarketId
|
|
15
14
|
|
|
16
15
|
FIXTURE = json.loads(
|
|
@@ -19,11 +18,6 @@ FIXTURE = json.loads(
|
|
|
19
18
|
FUSE_NAMES = frozenset(name for name in FIXTURE["contracts"] if name.endswith("Fuse"))
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
def test_default_pending_reader_matches_broadcast() -> None:
|
|
23
|
-
expected = FIXTURE["contracts"]["HyperCorePendingReader"]["address"]
|
|
24
|
-
assert HYPERCORE_PENDING_READERS[FIXTURE["chain_id"]] == expected
|
|
25
|
-
|
|
26
|
-
|
|
27
21
|
def _read_address(web3: Web3, target: str, signature: str, block: int) -> str:
|
|
28
22
|
result = web3.eth.call(
|
|
29
23
|
{"to": target, "data": Web3.keccak(text=signature)[:4]},
|
|
@@ -34,6 +34,7 @@ from ipor_fusion.fuses.hypercore import (
|
|
|
34
34
|
precompile_index_of,
|
|
35
35
|
)
|
|
36
36
|
from ipor_fusion.hypercore import (
|
|
37
|
+
HYPERCORE_PENDING_READERS,
|
|
37
38
|
HyperCoreCancelFuse,
|
|
38
39
|
HyperCoreDepositFuse,
|
|
39
40
|
HyperCoreOrderFuse,
|
|
@@ -125,6 +126,21 @@ def test_pending_state_reads_through_the_vault(
|
|
|
125
126
|
assert state.pending or state.settled
|
|
126
127
|
|
|
127
128
|
|
|
129
|
+
def test_both_reader_builds_read_the_same_pending_slot(
|
|
130
|
+
ctx: Web3Context, pending: HyperCorePendingReader
|
|
131
|
+
):
|
|
132
|
+
legacy = pending.pending_state().call(ctx)
|
|
133
|
+
current = (
|
|
134
|
+
HyperCorePendingReader(VAULT, HYPERCORE_PENDING_READERS[999])
|
|
135
|
+
.pending_state()
|
|
136
|
+
.call(ctx)
|
|
137
|
+
)
|
|
138
|
+
shared = ("action_nonce", "action_class", "pending_until", "cached_value_wad")
|
|
139
|
+
assert [getattr(current, f) for f in shared] == [getattr(legacy, f) for f in shared]
|
|
140
|
+
assert current.payload_hash == legacy.payload_hash
|
|
141
|
+
assert current.l1_block_available and current.current_l1_block > 0
|
|
142
|
+
|
|
143
|
+
|
|
128
144
|
def test_precompiles_batch_through_multicall3(ctx: Web3Context):
|
|
129
145
|
reader = HyperCoreReader()
|
|
130
146
|
nvda = precompile_index_of(XYZ_NVDA)
|
|
@@ -14,7 +14,11 @@ from eth_utils import function_signature_to_4byte_selector
|
|
|
14
14
|
from web3 import Web3
|
|
15
15
|
from web3.exceptions import ContractLogicError
|
|
16
16
|
|
|
17
|
-
from ipor_fusion import
|
|
17
|
+
from ipor_fusion import (
|
|
18
|
+
HyperCoreValuationError,
|
|
19
|
+
PlasmaVault,
|
|
20
|
+
UnsupportedContractVersionError,
|
|
21
|
+
)
|
|
18
22
|
from ipor_fusion.hypercore import (
|
|
19
23
|
HyperCoreActionClass,
|
|
20
24
|
HyperCoreNav,
|
|
@@ -32,6 +36,7 @@ from ipor_fusion.readers.hypercore import (
|
|
|
32
36
|
ACCOUNT_MARGIN_SUMMARY_PRECOMPILE,
|
|
33
37
|
CORE_USER_EXISTS_PRECOMPILE,
|
|
34
38
|
L1_BLOCK_NUMBER_PRECOMPILE,
|
|
39
|
+
LEGACY_PENDING_STATE_TYPE,
|
|
35
40
|
PENDING_STATE_TYPE,
|
|
36
41
|
PERP_ASSET_INFO_PRECOMPILE,
|
|
37
42
|
POSITION_PRECOMPILE,
|
|
@@ -154,32 +159,47 @@ class TestPrecompileCalls:
|
|
|
154
159
|
self.reader.perp_asset_info(1 << 32)
|
|
155
160
|
|
|
156
161
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
162
|
+
_STATE_PREFIX = (
|
|
163
|
+
1_790_609_642,
|
|
164
|
+
1_164_341_828,
|
|
165
|
+
47_125_670,
|
|
166
|
+
1, # Transfer
|
|
167
|
+
0, # settlement mode unset for a transfer
|
|
168
|
+
0,
|
|
169
|
+
0,
|
|
170
|
+
13, # sendAsset
|
|
171
|
+
b"\x30" * 32,
|
|
172
|
+
False,
|
|
173
|
+
10**16,
|
|
174
|
+
32,
|
|
175
|
+
)
|
|
176
|
+
# effectKind, effectTokenIndex, effectEvmAsset, timeoutAt, expectedBalance,
|
|
177
|
+
# lastOrderL1Block: appended by the current build.
|
|
178
|
+
_EFFECT_FIELDS = (1, 0, "0x" + "00" * 20, 1_790_609_702, 10**6, 1_164_341_800)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def _pending_state_raw(*, pending: bool, settled: bool, legacy: bool) -> bytes:
|
|
182
|
+
l1 = (1_168_823_034, 1_790_931_001, True)
|
|
183
|
+
if legacy:
|
|
184
|
+
inner = encode(
|
|
185
|
+
[LEGACY_PENDING_STATE_TYPE],
|
|
186
|
+
[(_STATE_PREFIX, pending, settled, False, *l1)],
|
|
187
|
+
)
|
|
188
|
+
else:
|
|
189
|
+
inner = encode(
|
|
190
|
+
[PENDING_STATE_TYPE],
|
|
191
|
+
[(_STATE_PREFIX + _EFFECT_FIELDS, pending, settled, *l1)],
|
|
192
|
+
)
|
|
176
193
|
return encode(["(bytes)"], [(inner,)])
|
|
177
194
|
|
|
178
195
|
|
|
179
196
|
class TestUniversalRead:
|
|
180
|
-
|
|
197
|
+
@pytest.mark.parametrize("legacy", [False, True])
|
|
198
|
+
def test_pending_state_reads_through_the_vault(self, legacy: bool):
|
|
181
199
|
ctx = _ctx()
|
|
182
|
-
ctx.call.return_value = _pending_state_raw(
|
|
200
|
+
ctx.call.return_value = _pending_state_raw(
|
|
201
|
+
pending=False, settled=True, legacy=legacy
|
|
202
|
+
)
|
|
183
203
|
reader = HyperCorePendingReader(VAULT, READER)
|
|
184
204
|
|
|
185
205
|
state = reader.pending_state().call(ctx)
|
|
@@ -203,13 +223,29 @@ class TestUniversalRead:
|
|
|
203
223
|
1_168_823_034,
|
|
204
224
|
True,
|
|
205
225
|
)
|
|
226
|
+
assert state.current_timestamp == 1_790_931_001
|
|
206
227
|
assert state.payload_hash == b"\x30" * 32
|
|
207
228
|
|
|
208
|
-
|
|
229
|
+
@pytest.mark.parametrize("legacy", [False, True])
|
|
230
|
+
def test_is_pending_is_the_pending_state_predicate(self, legacy: bool):
|
|
209
231
|
ctx = _ctx()
|
|
210
|
-
|
|
211
|
-
|
|
232
|
+
ctx.call.return_value = _pending_state_raw(
|
|
233
|
+
pending=True, settled=False, legacy=legacy
|
|
234
|
+
)
|
|
212
235
|
assert HyperCorePendingReader(VAULT, READER).is_pending().call(ctx) is True
|
|
236
|
+
assert ctx.call.call_args.args[1][4:] == encode(
|
|
237
|
+
["address", "bytes"], [READER, _selector("pendingState()")]
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
def test_unknown_payload_size_is_refused(self):
|
|
241
|
+
ctx = _ctx()
|
|
242
|
+
ctx.call.return_value = encode(["(bytes)"], [(b"\x00" * 32 * 20,)])
|
|
243
|
+
with pytest.raises(UnsupportedContractVersionError, match="640 bytes"):
|
|
244
|
+
HyperCorePendingReader(VAULT, READER).pending_state().call(ctx)
|
|
245
|
+
|
|
246
|
+
def test_balance_fuse_value_and_raw_read_decode_their_payloads(self):
|
|
247
|
+
ctx = _ctx()
|
|
248
|
+
vault = PlasmaVault(VAULT)
|
|
213
249
|
ctx.call.return_value = encode(
|
|
214
250
|
["(bytes)"], [(encode(["uint256"], [8_245_000_000_000_000]),)]
|
|
215
251
|
)
|
|
@@ -226,7 +262,9 @@ class TestUniversalRead:
|
|
|
226
262
|
def test_reported_order_state_maps_the_enums(self):
|
|
227
263
|
ctx = _ctx()
|
|
228
264
|
state = (0, 0, 0, 2, 2, 2, 5, 1, b"\x00" * 32, True, 0, 1)
|
|
229
|
-
inner = encode(
|
|
265
|
+
inner = encode(
|
|
266
|
+
[LEGACY_PENDING_STATE_TYPE], [(state, True, False, True, 0, 0, False)]
|
|
267
|
+
)
|
|
230
268
|
ctx.call.return_value = encode(["(bytes)"], [(inner,)])
|
|
231
269
|
decoded = HyperCorePendingReader(VAULT, READER).pending_state().call(ctx)
|
|
232
270
|
assert decoded.action_class is HyperCoreActionClass.ORDER
|
|
@@ -258,7 +296,7 @@ def _universal_read(data: bytes) -> bytes:
|
|
|
258
296
|
"""`PlasmaVault.read` double: the pending reader or the balance fuse."""
|
|
259
297
|
target, inner = decode(["address", "bytes"], data[4:])
|
|
260
298
|
if Web3.to_checksum_address(target) == READER:
|
|
261
|
-
return _pending_state_raw(pending=False, settled=True)
|
|
299
|
+
return _pending_state_raw(pending=False, settled=True, legacy=False)
|
|
262
300
|
assert Web3.to_checksum_address(target) == BALANCE_FUSE
|
|
263
301
|
assert bytes(inner) == _selector("balanceOf()")
|
|
264
302
|
return encode(["(bytes)"], [(encode(["uint256"], [8_245_000_000_000_000]),)])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/examples/simple_aave_v3_supply_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/cli/vault_rendering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/context_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/fusion_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev272 → ipor_fusion-4.0.0.dev274}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|