ipor-fusion 4.0.0.dev330__tar.gz → 4.0.0.dev336__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.dev336}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/contract.py +9 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/multicall.py +16 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/hypercore.py +1 -2
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/market_ids.py +1 -8
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/preflight.py +5 -3
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/hypercore.py +2 -3
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/substrates.py +2 -4
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_multicall.py +82 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_preflight.py +17 -1
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/MIGRATION_4.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/README.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/hypercore_vault_official_deployment_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/scripts/fusion_error_signatures.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/address_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/registry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/hypercore_official.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_examples_hypercore_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_fuse_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_fusion_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_address.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_preflight.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_registry.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_examples_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_preflight_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_timelock_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/tests/typed_client/rejected.py +0 -0
- {ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/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
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"""HyperCore fuses (market 55): a HyperEVM PlasmaVault trading on Hyperliquid
|
|
2
|
-
Core through delegatecalled fuses.
|
|
3
|
-
market 54, since reassigned to the crosschain market.)
|
|
2
|
+
Core through delegatecalled fuses.
|
|
4
3
|
|
|
5
4
|
The vault is the Core account: the fuses read the HyperCore precompiles and
|
|
6
5
|
queue CoreWriter actions from the vault's own address, so no external position
|
|
@@ -100,18 +100,11 @@ class IporFusionMarkets:
|
|
|
100
100
|
# on other chains through an executor (Stargate/LayerZero or Chainlink
|
|
101
101
|
# CCIP). Substrate type: CrosschainSubstrateLib (1 EXECUTOR, 2 REMOTE_VAULT
|
|
102
102
|
# bound to a chain id).
|
|
103
|
-
# A legacy HyperEVM HyperCore test vault also uses 54 until it is
|
|
104
|
-
# redeployed on HyperCore's assigned market 55; do not interpret that
|
|
105
|
-
# vault's market-54 substrates as crosschain configuration.
|
|
106
103
|
CROSSCHAIN = MarketId(54)
|
|
107
104
|
# HyperCore market (id 55): a HyperEVM PlasmaVault trading on Hyperliquid
|
|
108
105
|
# Core through delegatecalled fuses (CoreWriter actions, precompile reads).
|
|
109
106
|
# Substrate type: HyperCoreSubstrateLib (1 SpotToken, 2 PerpMarket,
|
|
110
|
-
# 3 Destination, 4 Builder, 5 Config, 6 SendCap).
|
|
111
|
-
# contracts repo; the mirror test allowlists it until the constant lands.
|
|
112
|
-
# The first HyperEVM test deployment ran on id 54 before the contracts
|
|
113
|
-
# team assigned 54 to crosschain and moved HyperCore to 55; that vault's
|
|
114
|
-
# market 54 is pre-renumbering HyperCore wiring, not a crosschain market.
|
|
107
|
+
# 3 Destination, 4 Builder, 5 Config, 6 SendCap, 7 PerpPositionCap).
|
|
115
108
|
HYPERCORE = MarketId(55)
|
|
116
109
|
# POL unstaking via sPOLController. The out-of-band id is baked into the
|
|
117
110
|
# deployed fuses as an immutable (424243 = 0x67933), so it must match the
|
|
@@ -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
|
|
@@ -66,14 +66,13 @@ from ipor_fusion.types import (
|
|
|
66
66
|
|
|
67
67
|
T = TypeVar("T")
|
|
68
68
|
|
|
69
|
-
#:
|
|
69
|
+
#: The HyperCore market id.
|
|
70
70
|
HYPERCORE_MARKET = IporFusionMarkets.HYPERCORE
|
|
71
71
|
#: The only chain with the HyperCore precompiles.
|
|
72
72
|
HYPEREVM_CHAIN_ID = ChainId(999)
|
|
73
73
|
#: ``HyperCorePendingReader`` per chain, as ``ipor-abi`` publishes it. The
|
|
74
74
|
#: reader is a stateless helper the vault delegatecalls, so one deployment
|
|
75
|
-
#: serves every vault of the
|
|
76
|
-
#: build only while nothing is in flight: its hooks write no effect fields).
|
|
75
|
+
#: serves every vault of the released contracts build.
|
|
77
76
|
HYPERCORE_PENDING_READERS: dict[ChainId, ChecksumAddress] = {
|
|
78
77
|
HYPEREVM_CHAIN_ID: Web3.to_checksum_address(
|
|
79
78
|
"0x1EFFb12434f5fb59a636C54D8CBaC93b13DF1A9E"
|
|
@@ -636,10 +636,8 @@ _register_markets([53], _decode_uniswap_v4)
|
|
|
636
636
|
# Crosschain (54): EXECUTOR / REMOTE_VAULT typed substrates per
|
|
637
637
|
# CrosschainSubstrateLib.sol.
|
|
638
638
|
_register_markets([54], _decode_crosschain)
|
|
639
|
-
# HyperCore (55): typed substrates per HyperCoreSubstrateLib.sol
|
|
640
|
-
#
|
|
641
|
-
# tests/fixtures/hypercore_hip3_flow.json; that run used id 54 before the
|
|
642
|
-
# renumbering). Numeric 54 is the crosschain market, registered above.
|
|
639
|
+
# HyperCore (55): typed substrates per HyperCoreSubstrateLib.sol at the
|
|
640
|
+
# release the official deployment was built from.
|
|
643
641
|
_register_markets([55], _decode_hypercore)
|
|
644
642
|
|
|
645
643
|
|
|
@@ -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.dev336}/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.dev336}/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.dev336}/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.dev336}/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.dev336}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/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.dev336}/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.dev336}/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.dev336}/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.dev336}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/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.dev336}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev330 → ipor_fusion-4.0.0.dev336}/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.dev336}/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.dev336}/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.dev336}/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.dev336}/src/ipor_fusion/fuses/fluid_instadapp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|