ipor-fusion 4.0.0.dev330__tar.gz → 4.0.0.dev334__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.dev330 → ipor_fusion-4.0.0.dev334}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/contract.py +9 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/multicall.py +16 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/preflight.py +5 -3
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_multicall.py +82 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_preflight.py +17 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/README.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/hypercore_vault_official_deployment_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/scripts/fusion_error_signatures.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_examples_hypercore_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_examples_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_preflight_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_timelock_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/uv.lock +0 -0
|
@@ -19,6 +19,12 @@ T_co = TypeVar("T_co", covariant=True)
|
|
|
19
19
|
U = TypeVar("U")
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
class _AbiDecodeFailure(DecodingError):
|
|
23
|
+
"""The cause `Call.decode` chains a ``decode_error`` translation from, so an
|
|
24
|
+
optional batch read can tell an undecodable answer (``None``) apart from any
|
|
25
|
+
other error a decoder raises."""
|
|
26
|
+
|
|
27
|
+
|
|
22
28
|
# No ``slots=True``: on early 3.11 and 3.12 patch releases (3.11.1, 3.12.0 and
|
|
23
29
|
# 3.12.1 checked) ``Call[int](...)`` on a slotted frozen generic dataclass
|
|
24
30
|
# raises ``TypeError`` when typing sets ``__orig_class__`` on the instance.
|
|
@@ -122,7 +128,9 @@ class Call(Generic[T_co]):
|
|
|
122
128
|
except DecodingError as exc:
|
|
123
129
|
if self.decode_error is None:
|
|
124
130
|
raise
|
|
125
|
-
|
|
131
|
+
marker = _AbiDecodeFailure(str(exc))
|
|
132
|
+
marker.__cause__ = exc
|
|
133
|
+
raise self.decode_error(exc) from marker
|
|
126
134
|
single: object = values[0] if len(values) == 1 else values
|
|
127
135
|
if self.decoder is not None:
|
|
128
136
|
return self.decoder(single)
|
|
@@ -9,7 +9,7 @@ from web3 import Web3
|
|
|
9
9
|
from web3.exceptions import ContractLogicError
|
|
10
10
|
|
|
11
11
|
from ipor_fusion.core.context import Web3Context
|
|
12
|
-
from ipor_fusion.core.contract import Call, ContractWrapper
|
|
12
|
+
from ipor_fusion.core.contract import Call, ContractWrapper, _AbiDecodeFailure
|
|
13
13
|
from ipor_fusion.errors import EmptyCallResultError
|
|
14
14
|
|
|
15
15
|
T = TypeVar("T")
|
|
@@ -226,6 +226,13 @@ class Multicall3Batch:
|
|
|
226
226
|
settle(result)
|
|
227
227
|
|
|
228
228
|
|
|
229
|
+
def _translated_decode_failure(exc: Exception) -> bool:
|
|
230
|
+
"""Whether ``exc`` is a `Call.decode_error` translation of an undecodable
|
|
231
|
+
answer: it names the failure for required reads, while an optional read of
|
|
232
|
+
the same answer is ``None``."""
|
|
233
|
+
return isinstance(exc.__cause__, _AbiDecodeFailure)
|
|
234
|
+
|
|
235
|
+
|
|
229
236
|
def _try_decode(call: Call[T], ok: bool, data: bytes) -> T | None:
|
|
230
237
|
if not ok or not data:
|
|
231
238
|
return None
|
|
@@ -233,6 +240,10 @@ def _try_decode(call: Call[T], ok: bool, data: bytes) -> T | None:
|
|
|
233
240
|
return call.decode(data)
|
|
234
241
|
except DecodingError:
|
|
235
242
|
return None
|
|
243
|
+
except Exception as exc:
|
|
244
|
+
if _translated_decode_failure(exc):
|
|
245
|
+
return None
|
|
246
|
+
raise
|
|
236
247
|
|
|
237
248
|
|
|
238
249
|
def _try_call(call: Call[T], ctx: Web3Context) -> T | None:
|
|
@@ -240,3 +251,7 @@ def _try_call(call: Call[T], ctx: Web3Context) -> T | None:
|
|
|
240
251
|
return call.call(ctx)
|
|
241
252
|
except _CALL_FAILURES:
|
|
242
253
|
return None
|
|
254
|
+
except Exception as exc:
|
|
255
|
+
if _translated_decode_failure(exc):
|
|
256
|
+
return None
|
|
257
|
+
raise
|
|
@@ -141,8 +141,9 @@ def _market_id_call(fuse: FuseAddress) -> Call[MarketId]:
|
|
|
141
141
|
|
|
142
142
|
|
|
143
143
|
def _pinned(ctx: Web3Context) -> tuple[Web3Context, int]:
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
"""``ctx`` pinned to the number of the block it names (a number, hash or tag
|
|
145
|
+
such as ``finalized``), resolved once."""
|
|
146
|
+
block = int(ctx.web3.eth.get_block(ctx.default_block)["number"])
|
|
146
147
|
return ctx.at_block(block), block
|
|
147
148
|
|
|
148
149
|
|
|
@@ -321,7 +322,8 @@ def preflight_execute(
|
|
|
321
322
|
simulate: bool = True,
|
|
322
323
|
) -> ExecutePreflight:
|
|
323
324
|
"""Check ``actions`` as ``sender``'s `PlasmaVault.execute` on the state of one
|
|
324
|
-
base block
|
|
325
|
+
base block: the one ``ctx.default_block`` names (a number, hash or tag),
|
|
326
|
+
resolved once.
|
|
325
327
|
|
|
326
328
|
The static checks take a few Multicall3 batches (one per dependency-graph
|
|
327
329
|
level), the ``canCall`` read, the balance-fuse storage reads and, for a
|
|
@@ -370,3 +370,85 @@ class TestBatch:
|
|
|
370
370
|
batch.run()
|
|
371
371
|
assert [to for to, _ in seen] == [MULTICALL3_ADDRESS, TOKEN_B]
|
|
372
372
|
assert {block for _, block in seen} == {TestPinnedContext.BLOCK}
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
class TestNamedDecodeErrors:
|
|
376
|
+
"""A Call whose decode_error names an undecodable answer (an earlier
|
|
377
|
+
dispatcher's six-word observation): required reads raise the named error,
|
|
378
|
+
optional reads are None, with Multicall3 and without it."""
|
|
379
|
+
|
|
380
|
+
DISPATCHER = Web3.to_checksum_address("0x" + "cc" * 20)
|
|
381
|
+
SIX_WORDS = encode(["uint256"] * 6, [1, 2, 3, 4, 5, 6])
|
|
382
|
+
|
|
383
|
+
def _observation(self) -> Call[object]:
|
|
384
|
+
from ipor_fusion.crosschain import CcipCrosschainDispatcher
|
|
385
|
+
|
|
386
|
+
return CcipCrosschainDispatcher(self.DISPATCHER).observation()
|
|
387
|
+
|
|
388
|
+
def _answer(self, _to: str, _data: bytes) -> bytes:
|
|
389
|
+
return self.SIX_WORDS
|
|
390
|
+
|
|
391
|
+
def _contexts(self) -> list[MagicMock]:
|
|
392
|
+
return [
|
|
393
|
+
_ctx(self._answer),
|
|
394
|
+
TestWithoutMulticall3._ctx_without_multicall(self._answer),
|
|
395
|
+
]
|
|
396
|
+
|
|
397
|
+
def test_required_reads_raise_the_named_error(self):
|
|
398
|
+
from ipor_fusion.errors import UnsupportedContractVersionError
|
|
399
|
+
|
|
400
|
+
for ctx in self._contexts():
|
|
401
|
+
with pytest.raises(
|
|
402
|
+
UnsupportedContractVersionError, match="released 8-field"
|
|
403
|
+
):
|
|
404
|
+
self._observation().call(ctx)
|
|
405
|
+
with pytest.raises(UnsupportedContractVersionError):
|
|
406
|
+
Multicall3(ctx).aggregate([self._observation()])
|
|
407
|
+
batch = Multicall3(ctx).batch()
|
|
408
|
+
batch.add(self._observation())
|
|
409
|
+
with pytest.raises(UnsupportedContractVersionError):
|
|
410
|
+
batch.run()
|
|
411
|
+
|
|
412
|
+
def test_optional_reads_are_none(self):
|
|
413
|
+
for ctx in self._contexts():
|
|
414
|
+
assert Multicall3(ctx).try_aggregate([self._observation()]) == [None]
|
|
415
|
+
batch = Multicall3(ctx).batch()
|
|
416
|
+
read = batch.try_add(self._observation())
|
|
417
|
+
mapped = batch.try_add(self._observation().map(lambda o: o))
|
|
418
|
+
batch.run()
|
|
419
|
+
assert (read.value, mapped.value) == (None, None)
|
|
420
|
+
|
|
421
|
+
def test_other_decoder_errors_still_propagate_from_optional_reads(self):
|
|
422
|
+
from eth_abi.exceptions import DecodingError
|
|
423
|
+
|
|
424
|
+
def buggy(_value: object) -> object:
|
|
425
|
+
raise ValueError("decoder bug") from DecodingError("inner")
|
|
426
|
+
|
|
427
|
+
def translate(exc: Exception) -> Exception:
|
|
428
|
+
return RuntimeError(f"named: {exc}")
|
|
429
|
+
|
|
430
|
+
valid = encode(["uint256"], [7])
|
|
431
|
+
decoded_badly = Call(
|
|
432
|
+
to=self.DISPATCHER,
|
|
433
|
+
data=SELECTOR,
|
|
434
|
+
output_types=["uint256"],
|
|
435
|
+
decoder=buggy,
|
|
436
|
+
decode_error=translate,
|
|
437
|
+
)
|
|
438
|
+
mapped_badly = Call(
|
|
439
|
+
to=self.DISPATCHER,
|
|
440
|
+
data=SELECTOR,
|
|
441
|
+
output_types=["uint256"],
|
|
442
|
+
decode_error=translate,
|
|
443
|
+
).map(buggy)
|
|
444
|
+
for ctx in [
|
|
445
|
+
_ctx(lambda _to, _data: valid),
|
|
446
|
+
TestWithoutMulticall3._ctx_without_multicall(lambda _to, _data: valid),
|
|
447
|
+
]:
|
|
448
|
+
for call in (decoded_badly, mapped_badly):
|
|
449
|
+
with pytest.raises(ValueError, match="decoder bug"):
|
|
450
|
+
Multicall3(ctx).try_aggregate([call])
|
|
451
|
+
batch = Multicall3(ctx).batch()
|
|
452
|
+
batch.try_add(call)
|
|
453
|
+
with pytest.raises(ValueError, match="decoder bug"):
|
|
454
|
+
batch.run()
|
|
@@ -85,7 +85,7 @@ def _ctx(
|
|
|
85
85
|
ctx.chain_id = 8453
|
|
86
86
|
ctx.at_block.return_value = ctx
|
|
87
87
|
ctx.call.side_effect = multicall_aware(handler)
|
|
88
|
-
ctx.web3.eth.get_block.return_value = {"timestamp": NOW}
|
|
88
|
+
ctx.web3.eth.get_block.return_value = {"number": BLOCK, "timestamp": NOW}
|
|
89
89
|
return ctx
|
|
90
90
|
|
|
91
91
|
|
|
@@ -231,6 +231,22 @@ class _FakeSimulator:
|
|
|
231
231
|
return self.outcome
|
|
232
232
|
|
|
233
233
|
|
|
234
|
+
@pytest.mark.parametrize("named", ["finalized", "safe", "0x" + "ab" * 32, "latest"])
|
|
235
|
+
def test_the_block_the_context_names_is_resolved_and_pinned(monkeypatch, named):
|
|
236
|
+
monkeypatch.setattr(preflight_module, "is_simulate_v1_supported", lambda w3: True)
|
|
237
|
+
monkeypatch.setattr(preflight_module, "VaultSimulator", _FakeSimulator)
|
|
238
|
+
ctx = _ctx()
|
|
239
|
+
ctx.default_block = named
|
|
240
|
+
|
|
241
|
+
result = preflight_execute(ctx, VAULT, [_supply()], sender=SENDER)
|
|
242
|
+
|
|
243
|
+
ctx.web3.eth.get_block.assert_called_once_with(named)
|
|
244
|
+
ctx.at_block.assert_called_once_with(BLOCK)
|
|
245
|
+
# _FakeSimulator asserts it was built with block=BLOCK: the simulation
|
|
246
|
+
# runs on top of the resolved block, not the latest.
|
|
247
|
+
assert result.block_number == BLOCK
|
|
248
|
+
|
|
249
|
+
|
|
234
250
|
def test_the_simulation_reports_total_assets_and_a_revert(monkeypatch):
|
|
235
251
|
monkeypatch.setattr(preflight_module, "is_simulate_v1_supported", lambda w3: True)
|
|
236
252
|
monkeypatch.setattr(preflight_module, "VaultSimulator", _FakeSimulator)
|
|
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.dev330 → ipor_fusion-4.0.0.dev334}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/examples/simple_aave_v3_supply_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/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.dev330 → ipor_fusion-4.0.0.dev334}/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.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/fusion_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/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.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/external_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev334}/src/ipor_fusion/fuses/fluid_instadapp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|