ipor-fusion 4.0.0.dev266__tar.gz → 4.0.0.dev272__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.dev266 → ipor_fusion-4.0.0.dev272}/MIGRATION_4.md +14 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/PKG-INFO +2 -1
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/pyproject.toml +2 -1
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/__init__.py +2 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/plasma_vault.py +26 -6
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/types.py +2 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_public_api.py +4 -2
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_plasma_vault_setters_base.py +9 -1
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/typed_client/consumer.py +5 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/typed_client/rejected.py +3 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/uv.lock +6 -4
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/README.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/scripts/crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/context_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/simulation_result.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/explorer.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/hypercore/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/substrates.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_event_args.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_fake_rpc.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_golden.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_live.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_oracle_mapping_fake.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/simulate_v1_request.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/fetched.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/full.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/full.txt +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_market_golden.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_mcp_parity.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_oracle_mapping_golden.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_docs_typing.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_error_hierarchy.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_governance_wrappers.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_crosschain_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulation_errors.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_simulation_observation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_data_block.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_info_fetched_golden.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_reconciliation_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/tests/test_withdraw_manager.py +0 -0
|
@@ -647,6 +647,7 @@ label values; they do not validate byte widths or address spelling.
|
|
|
647
647
|
| `MarketId` | an `IporFusionMarkets` member, or `MarketId(n)` |
|
|
648
648
|
| `RoleId` | a `Roles` member (accepted as is), or `RoleId(n)`; `Roles.resolve(name)` returns one |
|
|
649
649
|
| `Decimals`, `Period`, `Amount`, `Shares`, ... | `Decimals(8)`, `Period(0)`, `Amount(n)`, `Shares(n)` |
|
|
650
|
+
| `Wad` | `Wad(6 * 10**17)` (60%): an 18-decimal fraction, `10**18` is 100% |
|
|
650
651
|
| `ChecksumAddress` | `Web3.to_checksum_address(value)` |
|
|
651
652
|
| `HexAddress` | any `ChecksumAddress`, or `parse_hex_address(value)` (20 bytes or `0x`/`0X`-prefixed hex in any case → lowercase `0x` form) |
|
|
652
653
|
| `MorphoBlueMarketId` | `parse_morpho_market_id(value)`: 32 bytes or hex in any spelling, always `0x` + 64 lowercase digits |
|
|
@@ -686,6 +687,8 @@ converted amounts `Amount`. A custom `VaultState` annotates the same.
|
|
|
686
687
|
`PlasmaVault.total_supply()`, `balance_of()` and `get_total_supply_cap()` return
|
|
687
688
|
`Shares` (vault shares), and `transfer` / `approve` / `transfer_from` /
|
|
688
689
|
`set_total_supply_cap` take `Shares`; `ERC20` keeps `Amount`.
|
|
690
|
+
`PlasmaVault.setup_markets_limits` takes `Sequence[tuple[MarketId, Wad]]`: each
|
|
691
|
+
limit is a share of total assets, not an asset amount (see Behavior changes).
|
|
689
692
|
`Reconciliation` amounts (`balance_fuses_total`, `underlying_on_vault`,
|
|
690
693
|
`rewards_manager_balance`, `erc20_direct_total`, `sum`, `on_chain_total_assets`, `delta`,
|
|
691
694
|
`pending_withdrawals`, `implied_market_total`, `market_storage_divergence`) are
|
|
@@ -1001,6 +1004,17 @@ and `log_index` was passed through as given (a hex string from a raw log); the e
|
|
|
1001
1004
|
These apply to every caller, type-checked or not. Changes described in full above
|
|
1002
1005
|
are listed with a link.
|
|
1003
1006
|
|
|
1007
|
+
- **`PlasmaVault.setup_markets_limits` takes WAD shares and validates them.** The
|
|
1008
|
+
contract (`AssetDistributionProtectionLib.MarketLimit.limitInPercentage`) reads each
|
|
1009
|
+
limit as the most of the vault's total assets the market may hold, `10**18` being
|
|
1010
|
+
100%; 3.x typed it as an `Amount` and documented it as an asset amount, so a limit
|
|
1011
|
+
set "in asset units" (`1_000_000` for 1 USDC) became a near-zero share that blocks
|
|
1012
|
+
the market once limits are activated. It now takes `Wad` and raises `ValueError`
|
|
1013
|
+
before building the call for a limit outside `0..10**18`: a negative one is no
|
|
1014
|
+
uint256, and above 100% the vault reverts `MarketLimitSetupInPercentageIsTooHigh`. Pass the share: `Wad(6 * 10**17)` for 60%. Check limits
|
|
1015
|
+
set with 3.x with `PlasmaVault.get_market_limit(market).call(ctx)`, which
|
|
1016
|
+
returns the `Wad` share.
|
|
1017
|
+
|
|
1004
1018
|
- **The CLI and the MCP tools take the same arguments.**
|
|
1005
1019
|
- **MCP inputs:** the vault tools' `chain_id` and every `block_number` are
|
|
1006
1020
|
optional and omitted means auto-detected / latest; `market_morpho_blue` and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ipor-fusion
|
|
3
|
-
Version: 4.0.0.
|
|
3
|
+
Version: 4.0.0.dev272
|
|
4
4
|
Summary: The IPOR Fusion SDK for Python
|
|
5
5
|
Project-URL: homepage, https://ipor.io
|
|
6
6
|
Project-URL: repository, https://github.com/IPOR-Labs/ipor-fusion.py
|
|
@@ -28,6 +28,7 @@ Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
|
28
28
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
29
|
Classifier: Topic :: Utilities
|
|
30
30
|
Requires-Python: >=3.11
|
|
31
|
+
Requires-Dist: certifi>=2026.10.19
|
|
31
32
|
Requires-Dist: eth-abi<6,>=5.1.0
|
|
32
33
|
Requires-Dist: eth-account<1,>=0.13
|
|
33
34
|
Requires-Dist: eth-typing<7,>=6.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ipor-fusion"
|
|
3
|
-
version = "4.0.0.
|
|
3
|
+
version = "4.0.0.dev272"
|
|
4
4
|
description = "The IPOR Fusion SDK for Python"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Adam Mydlarz", email = "amydlarz@gmail.com" },
|
|
@@ -31,6 +31,7 @@ classifiers = [
|
|
|
31
31
|
"Natural Language :: English",
|
|
32
32
|
]
|
|
33
33
|
dependencies = [
|
|
34
|
+
"certifi>=2026.10.19",
|
|
34
35
|
"eth-account>=0.13,<1",
|
|
35
36
|
"eth-typing>=6.0.0,<7",
|
|
36
37
|
"eth-abi>=5.1.0,<6",
|
|
@@ -334,6 +334,7 @@ from ipor_fusion.types import (
|
|
|
334
334
|
TokenId,
|
|
335
335
|
TxHash,
|
|
336
336
|
Verdict,
|
|
337
|
+
Wad,
|
|
337
338
|
format_amount,
|
|
338
339
|
format_shares,
|
|
339
340
|
parse_access_manager_address,
|
|
@@ -611,6 +612,7 @@ __all__ = [
|
|
|
611
612
|
"Liquidity",
|
|
612
613
|
"RoleId",
|
|
613
614
|
"ChainId",
|
|
615
|
+
"Wad",
|
|
614
616
|
"MorphoBlueMarketId",
|
|
615
617
|
"ProposalHash",
|
|
616
618
|
"TxHash",
|
|
@@ -30,10 +30,13 @@ from ipor_fusion.types import (
|
|
|
30
30
|
PlasmaVaultAddress,
|
|
31
31
|
RoleId,
|
|
32
32
|
Shares,
|
|
33
|
+
Wad,
|
|
33
34
|
)
|
|
34
35
|
|
|
35
36
|
T = TypeVar("T")
|
|
36
37
|
|
|
38
|
+
WAD = Wad(10**18)
|
|
39
|
+
|
|
37
40
|
_BALANCE_FUSE_ADDED_TOPIC = HexBytes(
|
|
38
41
|
Web3.keccak(text="BalanceFuseAdded(uint256,address)")
|
|
39
42
|
)
|
|
@@ -358,8 +361,24 @@ class PlasmaVault(ContractWrapper):
|
|
|
358
361
|
bytes(selector),
|
|
359
362
|
)
|
|
360
363
|
|
|
361
|
-
def setup_markets_limits(
|
|
362
|
-
|
|
364
|
+
def setup_markets_limits(
|
|
365
|
+
self, limits: Sequence[tuple[MarketId, Wad]]
|
|
366
|
+
) -> Call[None]:
|
|
367
|
+
"""Set each market's limit: the most of the vault's total assets the
|
|
368
|
+
market may hold, as a `Wad` share (``Wad(6 * 10**17)`` is 60%), enforced
|
|
369
|
+
once `activate_markets_limits` is on (AssetDistributionProtectionLib).
|
|
370
|
+
|
|
371
|
+
Raises ``ValueError`` for a limit outside ``0..10**18``: a negative one is
|
|
372
|
+
no uint256, and the vault reverts ``MarketLimitSetupInPercentageIsTooHigh``
|
|
373
|
+
above 100%.
|
|
374
|
+
"""
|
|
375
|
+
for market, limit in limits:
|
|
376
|
+
if not 0 <= limit <= WAD:
|
|
377
|
+
raise ValueError(
|
|
378
|
+
f"market {market} limit {limit}: expected a WAD share in"
|
|
379
|
+
" 0..10**18; above 100% the vault reverts"
|
|
380
|
+
" MarketLimitSetupInPercentageIsTooHigh"
|
|
381
|
+
)
|
|
363
382
|
return self._write("setupMarketsLimits((uint256,uint256)[])", list(limits))
|
|
364
383
|
|
|
365
384
|
def update_markets_balances(self, market_ids: list[MarketId]) -> Call[None]:
|
|
@@ -507,11 +526,12 @@ class PlasmaVault(ContractWrapper):
|
|
|
507
526
|
"isMarketsLimitsActivated()", output_types=["bool"], decoder=bool
|
|
508
527
|
)
|
|
509
528
|
|
|
510
|
-
def get_market_limit(self, market: MarketId) -> Call[
|
|
511
|
-
"""The most of the vault's total assets ``market`` may hold, as a
|
|
512
|
-
share (``10**18`` is 100%), enforced only while limits are activated
|
|
529
|
+
def get_market_limit(self, market: MarketId) -> Call[Wad]:
|
|
530
|
+
"""The most of the vault's total assets ``market`` may hold, as a `Wad`
|
|
531
|
+
share (``10**18`` is 100%), enforced only while limits are activated;
|
|
532
|
+
`setup_markets_limits` sets it."""
|
|
513
533
|
return self._view(
|
|
514
|
-
"getMarketLimit(uint256)", market, output_types=["uint256"], decoder=
|
|
534
|
+
"getMarketLimit(uint256)", market, output_types=["uint256"], decoder=Wad
|
|
515
535
|
)
|
|
516
536
|
|
|
517
537
|
def activate_markets_limits(self) -> Call[None]:
|
|
@@ -15,6 +15,8 @@ Tick = NewType("Tick", int)
|
|
|
15
15
|
Liquidity = NewType("Liquidity", int)
|
|
16
16
|
RoleId = NewType("RoleId", int)
|
|
17
17
|
ChainId = NewType("ChainId", int)
|
|
18
|
+
# An 18-decimal fixed-point fraction: 10**18 is 1, i.e. 100% (a market limit).
|
|
19
|
+
Wad = NewType("Wad", int)
|
|
18
20
|
# A Morpho Blue market id (bytes32) in its canonical spelling: "0x" and 64
|
|
19
21
|
# lowercase hex digits, as the Morpho API reports it. Build one with
|
|
20
22
|
# parse_morpho_market_id.
|
|
@@ -73,6 +73,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
73
73
|
"CacheField",
|
|
74
74
|
"CacheKey",
|
|
75
75
|
"Call",
|
|
76
|
+
"CallPermission",
|
|
76
77
|
"ChainId",
|
|
77
78
|
"ChainlinkDetailJson",
|
|
78
79
|
"ChangelogEntry",
|
|
@@ -80,6 +81,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
80
81
|
"CloneArgs",
|
|
81
82
|
"CompoundV3Reader",
|
|
82
83
|
"CompoundV3SupplyFuse",
|
|
84
|
+
"ContextManager",
|
|
83
85
|
"ContractCache",
|
|
84
86
|
"ContractNotFoundError",
|
|
85
87
|
"CrosschainDiscoveryError",
|
|
@@ -170,7 +172,6 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
170
172
|
"HyperCorePerpMarketJson",
|
|
171
173
|
"HyperCoreSpotLegJson",
|
|
172
174
|
"HyperCoreValuationError",
|
|
173
|
-
"ContextManager",
|
|
174
175
|
"InFlightLimit",
|
|
175
176
|
"IporFusionError",
|
|
176
177
|
"IporFusionMarkets",
|
|
@@ -272,7 +273,6 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
272
273
|
"RoleAccountJson",
|
|
273
274
|
"RoleAccountsJson",
|
|
274
275
|
"RoleId",
|
|
275
|
-
"CallPermission",
|
|
276
276
|
"RoleStatus",
|
|
277
277
|
"Roles",
|
|
278
278
|
"SUPPORTED_CHAIN_IDS",
|
|
@@ -333,6 +333,7 @@ _ALL_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
333
333
|
"Verdict",
|
|
334
334
|
"VerifierResultUnavailable",
|
|
335
335
|
"VestingData",
|
|
336
|
+
"Wad",
|
|
336
337
|
"Web3Context",
|
|
337
338
|
"WithdrawManager",
|
|
338
339
|
"WithdrawManagerData",
|
|
@@ -1112,6 +1113,7 @@ _MODULE_PATH_SNAPSHOT: dict[str, frozenset[str]] = {
|
|
|
1112
1113
|
"TransferId",
|
|
1113
1114
|
"TxHash",
|
|
1114
1115
|
"Verdict",
|
|
1116
|
+
"Wad",
|
|
1115
1117
|
"ZERO_ADDRESS",
|
|
1116
1118
|
"format_amount",
|
|
1117
1119
|
"format_shares",
|
|
@@ -20,6 +20,7 @@ from __future__ import annotations
|
|
|
20
20
|
|
|
21
21
|
import logging
|
|
22
22
|
|
|
23
|
+
import pytest
|
|
23
24
|
from eth_abi import decode as abi_decode
|
|
24
25
|
from eth_utils import function_signature_to_4byte_selector
|
|
25
26
|
from web3 import Web3
|
|
@@ -97,7 +98,8 @@ def test_grant_market_substrates_calldata_selector_and_roundtrip():
|
|
|
97
98
|
|
|
98
99
|
|
|
99
100
|
def test_setup_markets_limits_calldata_selector_and_roundtrip():
|
|
100
|
-
|
|
101
|
+
# MarketLimit(AAVE_V3_MARKET_ID, 6e17) // 60%, as in the contracts' PlasmaVaultBasic test.
|
|
102
|
+
pairs = [(1, 6 * 10**17), (2, 10**18), (3, 0)]
|
|
101
103
|
calldata = _bare_vault().setup_markets_limits(pairs).calldata
|
|
102
104
|
assert calldata[:4] == function_signature_to_4byte_selector(
|
|
103
105
|
"setupMarketsLimits((uint256,uint256)[])"
|
|
@@ -106,6 +108,12 @@ def test_setup_markets_limits_calldata_selector_and_roundtrip():
|
|
|
106
108
|
assert [(int(mkt), int(cap)) for mkt, cap in decoded] == pairs
|
|
107
109
|
|
|
108
110
|
|
|
111
|
+
@pytest.mark.parametrize("limit", [10**18 + 1, -1])
|
|
112
|
+
def test_setup_markets_limits_rejects_a_limit_outside_a_wad_share(limit):
|
|
113
|
+
with pytest.raises(ValueError, match="expected a WAD share in 0..10"):
|
|
114
|
+
_bare_vault().setup_markets_limits([(1, 10**17), (2, limit)])
|
|
115
|
+
|
|
116
|
+
|
|
109
117
|
def test_configure_instant_withdrawal_fuses_calldata_selector_and_roundtrip():
|
|
110
118
|
sub1 = b"\x11" * 32
|
|
111
119
|
sub2 = b"\x22" * 32
|
|
@@ -56,6 +56,7 @@ from ipor_fusion import (
|
|
|
56
56
|
TransactionError,
|
|
57
57
|
VaultInfoJson,
|
|
58
58
|
VaultSimulator,
|
|
59
|
+
Wad,
|
|
59
60
|
Web3Context,
|
|
60
61
|
build_meta_morpho_json,
|
|
61
62
|
build_morpho_blue_market_json,
|
|
@@ -120,6 +121,10 @@ def access(ctx: Web3Context, am: AccessManager, account: ChecksumAddress) -> Non
|
|
|
120
121
|
am.read_accounts_with_role(ctx, Roles.resolve("ATOMIST"))
|
|
121
122
|
|
|
122
123
|
|
|
124
|
+
def market_limits(vault: PlasmaVault) -> None:
|
|
125
|
+
vault.setup_markets_limits([(IporFusionMarkets.AAVE_V3, Wad(6 * 10**17))])
|
|
126
|
+
|
|
127
|
+
|
|
123
128
|
def governance(vault: PlasmaVault) -> None:
|
|
124
129
|
vault.set_minimal_execution_delays_for_roles(
|
|
125
130
|
[(Roles.ALPHA_ROLE, Period.HOUR), (RoleId(100), Period(0))]
|
|
@@ -14,6 +14,7 @@ from ipor_fusion import (
|
|
|
14
14
|
ChainId,
|
|
15
15
|
ExternalStateEvent,
|
|
16
16
|
ExternalStateExecutor,
|
|
17
|
+
MarketId,
|
|
17
18
|
MorphoBlueMarketJson,
|
|
18
19
|
Multicall3,
|
|
19
20
|
PlasmaVault,
|
|
@@ -74,6 +75,8 @@ def roles_do_not_mix(ctx: Web3Context, vault: PlasmaVaultAddress) -> None:
|
|
|
74
75
|
pv = PlasmaVault(vault)
|
|
75
76
|
pv.configure_instant_withdrawal_fuses([(pv.address, [])]) # pyright: ignore[reportArgumentType]
|
|
76
77
|
HyperCorePendingReader(pv, pv.address) # pyright: ignore[reportArgumentType]
|
|
78
|
+
# A market limit is a WAD share of total assets, not an asset amount.
|
|
79
|
+
pv.setup_markets_limits([(MarketId(1), Amount(10**6))]) # pyright: ignore[reportArgumentType]
|
|
77
80
|
|
|
78
81
|
|
|
79
82
|
def selectors_are_not_chain_ids(factory: CcipCrosschainFactory) -> None:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 3
|
|
3
3
|
requires-python = ">=3.11"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
@@ -263,11 +263,11 @@ wheels = [
|
|
|
263
263
|
|
|
264
264
|
[[package]]
|
|
265
265
|
name = "certifi"
|
|
266
|
-
version = "2026.
|
|
266
|
+
version = "2026.10.19"
|
|
267
267
|
source = { registry = "https://pypi.org/simple" }
|
|
268
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
268
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a6/bd/1436c50cc46699de0230fbaacc1d1de7bfec413176099949e9d5112e88f2/certifi-2026.10.19.tar.gz", hash = "sha256:035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae", size = 137598, upload-time = "2026-10-20T02:24:16.604Z" }
|
|
269
269
|
wheels = [
|
|
270
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
270
|
+
{ url = "https://files.pythonhosted.org/packages/c4/51/29046e48f693c54e5b7412216d447a1d8362c9653148d98c02cdf65fa733/certifi-2026.10.19-py3-none-any.whl", hash = "sha256:42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b", size = 136464, upload-time = "2026-10-20T02:24:15.072Z" },
|
|
271
271
|
]
|
|
272
272
|
|
|
273
273
|
[[package]]
|
|
@@ -1111,6 +1111,7 @@ name = "ipor-fusion"
|
|
|
1111
1111
|
version = "3.16.0"
|
|
1112
1112
|
source = { editable = "." }
|
|
1113
1113
|
dependencies = [
|
|
1114
|
+
{ name = "certifi" },
|
|
1114
1115
|
{ name = "eth-abi" },
|
|
1115
1116
|
{ name = "eth-account" },
|
|
1116
1117
|
{ name = "eth-typing" },
|
|
@@ -1145,6 +1146,7 @@ dev = [
|
|
|
1145
1146
|
|
|
1146
1147
|
[package.metadata]
|
|
1147
1148
|
requires-dist = [
|
|
1149
|
+
{ name = "certifi", specifier = ">=2026.10.19" },
|
|
1148
1150
|
{ name = "click", marker = "extra == 'cli'", specifier = ">=8.0,<9" },
|
|
1149
1151
|
{ name = "click", marker = "extra == 'mcp'", specifier = ">=8.0,<9" },
|
|
1150
1152
|
{ name = "eth-abi", specifier = ">=5.1.0,<6" },
|
|
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.dev266 → ipor_fusion-4.0.0.dev272}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/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
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/oracle_mapping_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_info_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/cli/vault_markets_view.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/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.dev266 → ipor_fusion-4.0.0.dev272}/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.dev266 → ipor_fusion-4.0.0.dev272}/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.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/rewards_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/simulation_result.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/lane.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/ccip.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/fuses/stargate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/messages.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/crosschain/stargate/lane.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/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.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/external_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev266 → ipor_fusion-4.0.0.dev272}/src/ipor_fusion/fuses/fluid_instadapp.py
RENAMED
|
File without changes
|