ipor-fusion 4.0.0.dev293__tar.gz → 4.0.0.dev295__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/MIGRATION_4.md +6 -2
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/__init__.py +2 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/__init__.py +2 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/external_state_executor.py +46 -3
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_external_state_executor.py +30 -1
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_public_api.py +2 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/README.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/scripts/crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/uv.lock +0 -0
|
@@ -438,8 +438,12 @@ exist; the comparison is equality either way.
|
|
|
438
438
|
- `ExternalStateVaultState.last_checked_custodian_timestamp` is
|
|
439
439
|
`last_checked_custodian_marker` and `BalanceFuseSnapshot.last_custodian_update_timestamp`
|
|
440
440
|
is `custodian_marker`, both a `CustodianMarker` (an opaque value the
|
|
441
|
-
contracts only compare for equality): a timestamp on an earlier
|
|
442
|
-
|
|
441
|
+
contracts only compare for equality): a unix timestamp on an earlier
|
|
442
|
+
executor, a confirmation count on a released one.
|
|
443
|
+
`ExternalStateVaultState.custodian_marker_kind` (`CustodianMarkerKind`, read
|
|
444
|
+
from the executor at the snapshot block; `None` without an executor) and
|
|
445
|
+
`ExternalStateExecutor.read_custodian_marker_kind(ctx)` say which; never
|
|
446
|
+
compare a count with a clock. `ExternalStateExecutor.confirm_count()`
|
|
443
447
|
exists only on the released executor (it reverts on an earlier one), and
|
|
444
448
|
`last_custodian_update_timestamp()` reads the timestamp on both.
|
|
445
449
|
- New on the released build: `ExternalStateExecutor.unforwarded_credit(asset)`,
|
|
@@ -42,6 +42,7 @@ from ipor_fusion.core.erc20 import ERC20
|
|
|
42
42
|
from ipor_fusion.core.external_state_executor import (
|
|
43
43
|
BalanceFuseSnapshot,
|
|
44
44
|
BalanceProposal,
|
|
45
|
+
CustodianMarkerKind,
|
|
45
46
|
ExternalStateExecutor,
|
|
46
47
|
ExternalStateVaultState,
|
|
47
48
|
read_external_state,
|
|
@@ -545,6 +546,7 @@ __all__ = [
|
|
|
545
546
|
"CloneArgs",
|
|
546
547
|
"ExternalStateExecutor",
|
|
547
548
|
"BalanceFuseSnapshot",
|
|
549
|
+
"CustodianMarkerKind",
|
|
548
550
|
"ExternalStateVaultState",
|
|
549
551
|
"read_external_state",
|
|
550
552
|
"erc20_balance_slot",
|
|
@@ -18,6 +18,7 @@ from ipor_fusion.core.erc20 import ERC20
|
|
|
18
18
|
from ipor_fusion.core.external_state_executor import (
|
|
19
19
|
BalanceFuseSnapshot,
|
|
20
20
|
BalanceProposal,
|
|
21
|
+
CustodianMarkerKind,
|
|
21
22
|
ExternalStateExecutor,
|
|
22
23
|
ExternalStateVaultState,
|
|
23
24
|
read_external_state,
|
|
@@ -122,6 +123,7 @@ __all__ = [
|
|
|
122
123
|
"BalanceFuseSnapshot",
|
|
123
124
|
"BalanceProposal",
|
|
124
125
|
"ExternalStateExecutor",
|
|
126
|
+
"CustodianMarkerKind",
|
|
125
127
|
"ExternalStateVaultState",
|
|
126
128
|
"read_external_state",
|
|
127
129
|
"Fuse",
|
|
@@ -18,13 +18,15 @@ from __future__ import annotations
|
|
|
18
18
|
|
|
19
19
|
from collections.abc import Iterable
|
|
20
20
|
from dataclasses import dataclass, replace
|
|
21
|
+
from enum import Enum
|
|
21
22
|
|
|
22
23
|
from eth_abi import decode, encode
|
|
23
24
|
from eth_abi.exceptions import DecodingError
|
|
24
25
|
from eth_typing import ChecksumAddress
|
|
25
|
-
from eth_utils import keccak
|
|
26
|
+
from eth_utils import function_signature_to_4byte_selector, keccak
|
|
26
27
|
from hexbytes import HexBytes
|
|
27
28
|
from web3 import Web3
|
|
29
|
+
from web3.exceptions import ContractLogicError
|
|
28
30
|
from web3.types import BlockIdentifier, Timestamp
|
|
29
31
|
|
|
30
32
|
from ipor_fusion.core.context import Web3Context
|
|
@@ -118,6 +120,35 @@ def _require_matching_hash(
|
|
|
118
120
|
)
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
class CustodianMarkerKind(Enum):
|
|
124
|
+
"""What an executor's custodian marker counts: the last confirmed update's
|
|
125
|
+
unix timestamp (executors before the 2026-10-21 contracts release) or the
|
|
126
|
+
number of confirmed updates (executors of that release)."""
|
|
127
|
+
|
|
128
|
+
TIMESTAMP = "timestamp"
|
|
129
|
+
CONFIRM_COUNT = "confirm_count"
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
_CONFIRM_COUNT_SELECTOR = function_signature_to_4byte_selector("confirmCount()")
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _read_marker_kind(
|
|
136
|
+
ctx: Web3Context, executor: ChecksumAddress, block: BlockIdentifier
|
|
137
|
+
) -> CustodianMarkerKind:
|
|
138
|
+
"""Decided from the executor, not guessed from a value: a released
|
|
139
|
+
executor answers ``confirmCount()``, an earlier one has no such function
|
|
140
|
+
and the call reverts. Any other failure raises."""
|
|
141
|
+
try:
|
|
142
|
+
raw = ctx.call(executor, _CONFIRM_COUNT_SELECTOR, block)
|
|
143
|
+
except ContractLogicError:
|
|
144
|
+
return CustodianMarkerKind.TIMESTAMP
|
|
145
|
+
if len(raw) != 32:
|
|
146
|
+
raise ExternalStateError(
|
|
147
|
+
f"confirmCount() of {executor} returned {len(raw)} bytes, not a uint256"
|
|
148
|
+
)
|
|
149
|
+
return CustodianMarkerKind.CONFIRM_COUNT
|
|
150
|
+
|
|
151
|
+
|
|
121
152
|
@dataclass(frozen=True, slots=True)
|
|
122
153
|
class ExternalStateVaultState:
|
|
123
154
|
"""The external-state market's vault-scoped state, read from the vault's
|
|
@@ -136,7 +167,9 @@ class ExternalStateVaultState:
|
|
|
136
167
|
and not the pre-hook's staleness clock, which is
|
|
137
168
|
`ExternalStateExecutor.get_oldest_update_timestamp`. The fuse and the
|
|
138
169
|
pre-hook only compare it for equality with
|
|
139
|
-
`BalanceFuseSnapshot.custodian_marker
|
|
170
|
+
`BalanceFuseSnapshot.custodian_marker`. `custodian_marker_kind` says
|
|
171
|
+
which, read from the executor at the same block (``None`` without an
|
|
172
|
+
executor); `paused` is the flag
|
|
140
173
|
the balance fuse sets on a big change and `ExternalStateUnpauseFuse` clears
|
|
141
174
|
with an atomist signature. `ExternalStatePausePreHook` blocks the vault's
|
|
142
175
|
gated user operations while the flag is set, and also, flag or not, while
|
|
@@ -148,6 +181,7 @@ class ExternalStateVaultState:
|
|
|
148
181
|
executor: ChecksumAddress | None
|
|
149
182
|
last_total_balance: Amount
|
|
150
183
|
last_checked_custodian_marker: CustodianMarker
|
|
184
|
+
custodian_marker_kind: CustodianMarkerKind | None
|
|
151
185
|
paused: bool
|
|
152
186
|
block: int
|
|
153
187
|
|
|
@@ -232,10 +266,14 @@ def read_external_state(
|
|
|
232
266
|
raise ExternalStateError(
|
|
233
267
|
f"malformed pause flag in the external-state storage of {checksum}"
|
|
234
268
|
)
|
|
269
|
+
executor = Web3.to_checksum_address(f"0x{words[0]:040x}") if words[0] else None
|
|
235
270
|
return ExternalStateVaultState(
|
|
236
|
-
executor=
|
|
271
|
+
executor=executor,
|
|
237
272
|
last_total_balance=Amount(words[1]),
|
|
238
273
|
last_checked_custodian_marker=CustodianMarker(words[2]),
|
|
274
|
+
custodian_marker_kind=(
|
|
275
|
+
_read_marker_kind(ctx, executor, read_at) if executor else None
|
|
276
|
+
),
|
|
239
277
|
paused=words[3] == 1,
|
|
240
278
|
block=block,
|
|
241
279
|
)
|
|
@@ -365,6 +403,11 @@ class ExternalStateExecutor(ContractWrapper):
|
|
|
365
403
|
)
|
|
366
404
|
)
|
|
367
405
|
|
|
406
|
+
def read_custodian_marker_kind(self, ctx: Web3Context) -> CustodianMarkerKind:
|
|
407
|
+
"""Whether this executor's custodian marker is a timestamp or a
|
|
408
|
+
confirm count, at ``ctx``'s default block (see `CustodianMarkerKind`)."""
|
|
409
|
+
return _read_marker_kind(ctx, self._require_address(), ctx.default_block)
|
|
410
|
+
|
|
368
411
|
def confirm_count(self) -> Call[CustodianMarker]:
|
|
369
412
|
"""Executors of the 2026-10-21 contracts release only: the count of
|
|
370
413
|
confirmed custodian updates across every balance account, the marker
|
|
@@ -13,6 +13,7 @@ from eth_typing import ChecksumAddress
|
|
|
13
13
|
from eth_utils import keccak
|
|
14
14
|
from hexbytes import HexBytes
|
|
15
15
|
from web3 import Web3
|
|
16
|
+
from web3.exceptions import ContractLogicError
|
|
16
17
|
from web3.types import Timestamp
|
|
17
18
|
|
|
18
19
|
from ipor_fusion.core.external_state_executor import (
|
|
@@ -1182,8 +1183,12 @@ class TestReadExternalState:
|
|
|
1182
1183
|
BLOCKS = {"safe": 4_804_990, "finalized": 4_804_900, "earliest": 0}
|
|
1183
1184
|
HASH = "0x" + "ab" * 32
|
|
1184
1185
|
|
|
1185
|
-
def _ctx(self, words, default_block="latest", head=4_805_000):
|
|
1186
|
+
def _ctx(self, words, default_block="latest", head=4_805_000, confirm_count=None):
|
|
1186
1187
|
ctx = MagicMock()
|
|
1188
|
+
if confirm_count is None:
|
|
1189
|
+
ctx.call.side_effect = ContractLogicError("execution reverted")
|
|
1190
|
+
else:
|
|
1191
|
+
ctx.call.return_value = HexBytes(confirm_count.to_bytes(32, "big"))
|
|
1187
1192
|
ctx.default_block = default_block
|
|
1188
1193
|
blocks = dict(self.BLOCKS, latest=head)
|
|
1189
1194
|
blocks[self.HASH] = 4_700_123
|
|
@@ -1194,6 +1199,30 @@ class TestReadExternalState:
|
|
|
1194
1199
|
ctx.get_storage_at.side_effect = lambda vault, slot, block=None: by_slot[slot]
|
|
1195
1200
|
return ctx
|
|
1196
1201
|
|
|
1202
|
+
def test_the_marker_kind_is_read_from_the_executor_at_the_same_block(self):
|
|
1203
|
+
from ipor_fusion import CustodianMarkerKind, read_external_state
|
|
1204
|
+
|
|
1205
|
+
earlier = read_external_state(
|
|
1206
|
+
self._ctx([int(EXECUTOR_ADDR, 16), 1, 1_791_458_983, 0]), VAULT_ADDR
|
|
1207
|
+
)
|
|
1208
|
+
assert earlier.custodian_marker_kind is CustodianMarkerKind.TIMESTAMP
|
|
1209
|
+
ctx = self._ctx([int(EXECUTOR_ADDR, 16), 1, 7, 0], confirm_count=7)
|
|
1210
|
+
released = read_external_state(ctx, VAULT_ADDR)
|
|
1211
|
+
assert released.custodian_marker_kind is CustodianMarkerKind.CONFIRM_COUNT
|
|
1212
|
+
to, data, block = ctx.call.call_args.args
|
|
1213
|
+
assert data == Web3.keccak(text="confirmCount()")[:4]
|
|
1214
|
+
assert block == 4_805_000
|
|
1215
|
+
none = read_external_state(self._ctx([0, 0, 0, 0]), VAULT_ADDR)
|
|
1216
|
+
assert none.custodian_marker_kind is None
|
|
1217
|
+
|
|
1218
|
+
def test_a_failed_kind_read_raises(self):
|
|
1219
|
+
from ipor_fusion import read_external_state
|
|
1220
|
+
|
|
1221
|
+
ctx = self._ctx([int(EXECUTOR_ADDR, 16), 1, 7, 0])
|
|
1222
|
+
ctx.call.side_effect = ConnectionError("rpc down")
|
|
1223
|
+
with pytest.raises(ConnectionError):
|
|
1224
|
+
read_external_state(ctx, VAULT_ADDR)
|
|
1225
|
+
|
|
1197
1226
|
def test_reads_the_four_slots_at_one_resolved_block(self):
|
|
1198
1227
|
from ipor_fusion import read_external_state
|
|
1199
1228
|
|
|
@@ -153,6 +153,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
153
153
|
"ExternalStateTotalBalanceUpdatedArgs",
|
|
154
154
|
"ExternalStateUnpausedArgs",
|
|
155
155
|
"ExternalStateUnpausedEvent",
|
|
156
|
+
"CustodianMarkerKind",
|
|
156
157
|
"ExternalStateVaultState",
|
|
157
158
|
"Fee",
|
|
158
159
|
"FeeAccount",
|
|
@@ -531,6 +532,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
531
532
|
"CloneArgs",
|
|
532
533
|
"ERC20",
|
|
533
534
|
"ExternalStateExecutor",
|
|
535
|
+
"CustodianMarkerKind",
|
|
534
536
|
"ExternalStateVaultState",
|
|
535
537
|
"FeeAccount",
|
|
536
538
|
"FeeManager",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/examples/simple_aave_v3_supply_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/cli/vault_rendering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/context_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/fusion_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/crosschain/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/external_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/fuses/fluid_instadapp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev293 → ipor_fusion-4.0.0.dev295}/src/ipor_fusion/readers/compound_v3.py
RENAMED
|
File without changes
|