ipor-fusion 4.0.0.dev74__tar.gz → 4.0.0.dev78__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.dev74 → ipor_fusion-4.0.0.dev78}/MIGRATION_4.md +10 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/PKG-INFO +1 -1
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/chains.py +28 -28
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/explorer.py +3 -1
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/market_ids.py +0 -7
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/morpho_api.py +34 -12
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/hypercore.py +3 -2
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/lending_health.py +5 -10
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/morpho.py +10 -10
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/substrates.py +2 -3
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/vault_info.py +9 -9
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_lending_health.py +3 -4
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_solidity_mirrors.py +0 -2
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_substrates.py +1 -4
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/AGENTS.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/README.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/advanced_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/external_state_margin_leg_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/simple_aave_v3_supply_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/scripts/crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/skills/ipor-deploy-vault/SKILL.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/market_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/options.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/access.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/context.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/contract.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/multicall.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/oracle.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/lane.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/dependency_graph.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/errors.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/crosschain/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/crosschain/base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/crosschain/ccip.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/crosschain/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/guide/architecture.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/guide/glossary.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/guide/invariants.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/guide/quickstart.md +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/market_info.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/mcp/server.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/unpriceable.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/types.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/vault_data.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_guide.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_access_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_commands.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_lane.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_explorer.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_external_state_executor.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_fuse_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_deployment.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_live.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_outcome.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_readers.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_hypercore_simulation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_mcp_server.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_public_api.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_claim_morpho_rewards.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_crosschain_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_crosschain_hyperevm.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_euler_v2_batch_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_external_state_executor_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_looping_aave_v3_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_pilot_v3.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_pilot_v5_ramses.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_readers_integration.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_release_funds.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_swap_on_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_simulate_vault_from_scratch_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_unpriceable_tokens.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_web3_context.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/tests/typed_client/consumer.py +0 -0
- {ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/uv.lock +0 -0
|
@@ -133,6 +133,16 @@ and the Stargate fuse's `eid=` take it (`LayerZeroEid(30101)`).
|
|
|
133
133
|
`encode_oft_compose_msg(*, nonce=, src_eid=, amount_ld=, compose_msg=)` takes
|
|
134
134
|
keyword arguments only. `ZERO_ADDRESS` is a `ChecksumAddress` (same value).
|
|
135
135
|
|
|
136
|
+
**Chain registry and removed aliases.** `CHAIN_NAMES`, `CHAIN_NAME_TO_ID`,
|
|
137
|
+
`SUPPORTED_CHAIN_IDS`, `GET_LOGS_RANGE_HINTS`, `BLOCK_EXPLORER_URLS`,
|
|
138
|
+
`MORPHO_BLUE_ADDRESSES`, `AAVE_V3_POOL`, `PUBLIC_ALLOCATOR_ADDRESSES` and
|
|
139
|
+
`HYPERCORE_PENDING_READERS` are keyed by `ChainId` (`HYPEREVM_CHAIN_ID` is one) and
|
|
140
|
+
`explorer.SUPPORTED_CHAINS` is a `frozenset[ChainId]`, so
|
|
141
|
+
`ensure_supported_chain(CHAIN_NAME_TO_ID["ethereum"])` type-checks;
|
|
142
|
+
`PUBLIC_ALLOCATOR_ADDRESSES` values are `ChecksumAddress`. `IporFusionMarkets.RWA`
|
|
143
|
+
is gone: market 50 is `IporFusionMarkets.EXTERNAL_STATE`. `MORPHO_BLUE_ADDRESS` is
|
|
144
|
+
gone: use `morpho_blue_address(chain_id)`.
|
|
145
|
+
|
|
136
146
|
**Markets and substrates.** Every `IporFusionMarkets` member is a `MarketId`.
|
|
137
147
|
`decode_substrate`, `market_name`, `format_market_label` take `MarketId`.
|
|
138
148
|
|
|
@@ -5,48 +5,48 @@ from __future__ import annotations
|
|
|
5
5
|
from ipor_fusion.errors import UnsupportedChainError
|
|
6
6
|
from ipor_fusion.types import ChainId
|
|
7
7
|
|
|
8
|
-
CHAIN_NAMES: dict[
|
|
9
|
-
1: "ethereum",
|
|
10
|
-
42161: "arbitrum",
|
|
11
|
-
8453: "base",
|
|
12
|
-
10: "optimism",
|
|
13
|
-
130: "unichain",
|
|
14
|
-
137: "polygon",
|
|
15
|
-
56: "bsc",
|
|
16
|
-
239: "tac",
|
|
17
|
-
9745: "plasma",
|
|
18
|
-
43114: "avalanche",
|
|
19
|
-
250: "fantom",
|
|
20
|
-
143: "monad",
|
|
21
|
-
999: "hyperevm",
|
|
22
|
-
4663: "robinhood",
|
|
23
|
-
747474: "katana",
|
|
24
|
-
3637: "botanix",
|
|
25
|
-
57073: "ink",
|
|
26
|
-
14: "flare",
|
|
8
|
+
CHAIN_NAMES: dict[ChainId, str] = {
|
|
9
|
+
ChainId(1): "ethereum",
|
|
10
|
+
ChainId(42161): "arbitrum",
|
|
11
|
+
ChainId(8453): "base",
|
|
12
|
+
ChainId(10): "optimism",
|
|
13
|
+
ChainId(130): "unichain",
|
|
14
|
+
ChainId(137): "polygon",
|
|
15
|
+
ChainId(56): "bsc",
|
|
16
|
+
ChainId(239): "tac",
|
|
17
|
+
ChainId(9745): "plasma",
|
|
18
|
+
ChainId(43114): "avalanche",
|
|
19
|
+
ChainId(250): "fantom",
|
|
20
|
+
ChainId(143): "monad",
|
|
21
|
+
ChainId(999): "hyperevm",
|
|
22
|
+
ChainId(4663): "robinhood",
|
|
23
|
+
ChainId(747474): "katana",
|
|
24
|
+
ChainId(3637): "botanix",
|
|
25
|
+
ChainId(57073): "ink",
|
|
26
|
+
ChainId(14): "flare",
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
CHAIN_NAME_TO_ID: dict[str,
|
|
29
|
+
CHAIN_NAME_TO_ID: dict[str, ChainId] = {name: cid for cid, name in CHAIN_NAMES.items()}
|
|
30
30
|
|
|
31
31
|
# Chains the on-chain vault tooling (vault info/health/substrate fetch) is
|
|
32
32
|
# validated on. A provider for another chain may connect fine and still fail
|
|
33
33
|
# deeper in the stack (a missing Multicall3, an oracle quirk, an eth_getLogs
|
|
34
34
|
# cap the adaptive scan cannot page through). Extend only after the full
|
|
35
35
|
# vault_info path passes on every live vault of that chain.
|
|
36
|
-
SUPPORTED_CHAIN_IDS: frozenset[
|
|
37
|
-
|
|
36
|
+
SUPPORTED_CHAIN_IDS: frozenset[ChainId] = frozenset(
|
|
37
|
+
ChainId(cid) for cid in (1, 130, 143, 999, 8453, 9745, 42161, 43114, 747474)
|
|
38
38
|
)
|
|
39
39
|
|
|
40
40
|
# First eth_getLogs page size, in blocks, on chains whose providers cap the
|
|
41
41
|
# range (10,000 blocks) or time out on wide queries. The scan still shrinks a
|
|
42
42
|
# page the provider rejects; a hint only skips the whole-range attempt and the
|
|
43
43
|
# probing round trips.
|
|
44
|
-
GET_LOGS_RANGE_HINTS: dict[
|
|
45
|
-
130: 10_000,
|
|
46
|
-
9745: 10_000,
|
|
47
|
-
57073: 10_000,
|
|
48
|
-
43114: 1_000_000,
|
|
49
|
-
747474: 1_000_000,
|
|
44
|
+
GET_LOGS_RANGE_HINTS: dict[ChainId, int] = {
|
|
45
|
+
ChainId(130): 10_000,
|
|
46
|
+
ChainId(9745): 10_000,
|
|
47
|
+
ChainId(57073): 10_000,
|
|
48
|
+
ChainId(43114): 1_000_000,
|
|
49
|
+
ChainId(747474): 1_000_000,
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
|
|
@@ -17,7 +17,9 @@ from ipor_fusion.types import ChainId, TxHash, parse_tx_hash
|
|
|
17
17
|
|
|
18
18
|
ETHERSCAN_V2_URL = "https://api.etherscan.io/v2/api"
|
|
19
19
|
|
|
20
|
-
SUPPORTED_CHAINS =
|
|
20
|
+
SUPPORTED_CHAINS: frozenset[ChainId] = frozenset(
|
|
21
|
+
ChainId(cid) for cid in (1, 42161, 8453, 10, 137, 56, 43114, 250)
|
|
22
|
+
)
|
|
21
23
|
|
|
22
24
|
_MAX_RETRIES = 3
|
|
23
25
|
_RETRY_DELAY = 1.0
|
|
@@ -87,13 +87,6 @@ class IporFusionMarkets:
|
|
|
87
87
|
# 4 BALANCE_ACCOUNT, 5 STALENESS_MAX, 6 BIG_CHANGE_BPS, 7 DUST_THRESHOLD,
|
|
88
88
|
# 8 MIN_UPDATE_INTERVAL).
|
|
89
89
|
EXTERNAL_STATE = MarketId(50)
|
|
90
|
-
# Deprecated alias of EXTERNAL_STATE, kept for backward compatibility.
|
|
91
|
-
# Reverse id->name lookups skip aliases (see _DEPRECATED_ALIASES) so the
|
|
92
|
-
# canonical name is the one displayed.
|
|
93
|
-
RWA = MarketId(50)
|
|
94
|
-
# Deprecated member names that alias a canonical member of the same value;
|
|
95
|
-
# reverse id->name lookups skip these so the canonical name wins.
|
|
96
|
-
_DEPRECATED_ALIASES = frozenset({"RWA"})
|
|
97
90
|
# substrate type: AguaSubstrateLib (VAULT or ASSET)
|
|
98
91
|
AGUA_GLOBAL_CARRY = MarketId(51)
|
|
99
92
|
# dependence graph: balance of ERC20_VAULT_BALANCE (purchase tokens return
|
|
@@ -26,18 +26,40 @@ MORPHO_API_URL = "https://blue-api.morpho.org/graphql"
|
|
|
26
26
|
# Morpho API (`publicAllocators` query). Anyone can call `reallocateTo` on
|
|
27
27
|
# this contract — the vault must have granted it the ALLOCATOR_ROLE for
|
|
28
28
|
# public reallocation to actually go through.
|
|
29
|
-
PUBLIC_ALLOCATOR_ADDRESSES: dict[
|
|
30
|
-
1:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
PUBLIC_ALLOCATOR_ADDRESSES: dict[ChainId, ChecksumAddress] = {
|
|
30
|
+
ChainId(1): Web3.to_checksum_address(
|
|
31
|
+
"0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D"
|
|
32
|
+
), # Ethereum
|
|
33
|
+
ChainId(10): Web3.to_checksum_address(
|
|
34
|
+
"0x0d68a97324E602E02799CD83B42D337207B40658"
|
|
35
|
+
), # OP Mainnet
|
|
36
|
+
ChainId(137): Web3.to_checksum_address(
|
|
37
|
+
"0xfac15aff53ADd2ff80C2962127C434E8615Df0d3"
|
|
38
|
+
), # Polygon
|
|
39
|
+
ChainId(8453): Web3.to_checksum_address(
|
|
40
|
+
"0xA090dD1a701408Df1d4d0B85b716c87565f90467"
|
|
41
|
+
), # Base
|
|
42
|
+
ChainId(42161): Web3.to_checksum_address(
|
|
43
|
+
"0x769583Af5e9D03589F159EbEC31Cc2c23E8C355E"
|
|
44
|
+
), # Arbitrum One
|
|
45
|
+
ChainId(130): Web3.to_checksum_address(
|
|
46
|
+
"0xB0c9a107fA17c779B3378210A7a593e88938C7C9"
|
|
47
|
+
), # Unichain
|
|
48
|
+
ChainId(480): Web3.to_checksum_address(
|
|
49
|
+
"0xef9889B4e443DEd35FA0Bd060f2104Cca94e6A43"
|
|
50
|
+
), # World Chain
|
|
51
|
+
ChainId(143): Web3.to_checksum_address(
|
|
52
|
+
"0xfd70575B732F9482F4197FE1075492e114E97302"
|
|
53
|
+
), # Monad
|
|
54
|
+
ChainId(999): Web3.to_checksum_address(
|
|
55
|
+
"0x517505be22D9068687334e69ae7a02fC77edf4Fc"
|
|
56
|
+
), # HyperEVM
|
|
57
|
+
ChainId(988): Web3.to_checksum_address(
|
|
58
|
+
"0xbCB063D4B6D479b209C186e462828CBACaC82DbE"
|
|
59
|
+
), # Stable
|
|
60
|
+
ChainId(747474): Web3.to_checksum_address(
|
|
61
|
+
"0x39EB6Da5e88194C82B13491Df2e8B3E213eD2412"
|
|
62
|
+
), # Katana
|
|
41
63
|
}
|
|
42
64
|
|
|
43
65
|
_MARKET_QUERY = """
|
|
@@ -50,6 +50,7 @@ from ipor_fusion.fuses.hypercore import (
|
|
|
50
50
|
from ipor_fusion.market_ids import IporFusionMarkets
|
|
51
51
|
from ipor_fusion.substrates import decode_substrate
|
|
52
52
|
from ipor_fusion.types import (
|
|
53
|
+
ChainId,
|
|
53
54
|
FuseAddress,
|
|
54
55
|
HyperCoreActionId,
|
|
55
56
|
HyperCoreAsset,
|
|
@@ -66,12 +67,12 @@ T = TypeVar("T")
|
|
|
66
67
|
#: New HyperCore vaults use market 55; the abandoned pilot still keys 54.
|
|
67
68
|
HYPERCORE_MARKET = MarketId(IporFusionMarkets.HYPERCORE)
|
|
68
69
|
#: The only chain with the HyperCore precompiles.
|
|
69
|
-
HYPEREVM_CHAIN_ID = 999
|
|
70
|
+
HYPEREVM_CHAIN_ID = ChainId(999)
|
|
70
71
|
#: Known ``HyperCorePendingReader`` deployments per chain. The reader is a
|
|
71
72
|
#: stateless helper and any deployment serves any vault. The market-55 reader
|
|
72
73
|
#: is pinned in ``tests/fixtures/hypercore_market55.json`` until ``ipor-abi``
|
|
73
74
|
#: publishes it.
|
|
74
|
-
HYPERCORE_PENDING_READERS: dict[
|
|
75
|
+
HYPERCORE_PENDING_READERS: dict[ChainId, ChecksumAddress] = {
|
|
75
76
|
HYPEREVM_CHAIN_ID: Web3.to_checksum_address(
|
|
76
77
|
"0x83F54bc9eA4Dd19cb579Daa70368562C7a7534C4"
|
|
77
78
|
),
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/readers/lending_health.py
RENAMED
|
@@ -24,7 +24,6 @@ from ipor_fusion.market_ids import IporFusionMarkets
|
|
|
24
24
|
from ipor_fusion.readers.aave_v3 import AaveV3Reader
|
|
25
25
|
from ipor_fusion.readers.aave_v4 import AaveV4OracleReader, AaveV4SpokeReader
|
|
26
26
|
from ipor_fusion.readers.morpho import (
|
|
27
|
-
MORPHO_BLUE_ADDRESSES,
|
|
28
27
|
MorphoReader,
|
|
29
28
|
morpho_blue_address,
|
|
30
29
|
)
|
|
@@ -43,25 +42,21 @@ WAD = 10**18
|
|
|
43
42
|
RAY = 10**27
|
|
44
43
|
ORACLE_PRICE_SCALE = 10**36
|
|
45
44
|
|
|
46
|
-
# Deprecated: only valid on Ethereum and Base — use `morpho_blue_address(chain_id)`.
|
|
47
|
-
# Kept so existing imports keep resolving.
|
|
48
|
-
MORPHO_BLUE_ADDRESS: ChecksumAddress = MORPHO_BLUE_ADDRESSES[1]
|
|
49
|
-
|
|
50
45
|
# Aave V3 Core Pool per chain — the Pool of market AAVE_V3 only. Aave V3 Prime
|
|
51
46
|
# and SparkLend run on their own Pools, so a market's Pool is read from its
|
|
52
47
|
# balance fuse (`AaveV3FuseReader.pool`); this map is only the fallback of
|
|
53
48
|
# `fetch_vault_lending_health` for callers that pass no `aave_pools`.
|
|
54
|
-
AAVE_V3_POOL: dict[
|
|
55
|
-
1: Web3.to_checksum_address(
|
|
49
|
+
AAVE_V3_POOL: dict[ChainId, ChecksumAddress] = {
|
|
50
|
+
ChainId(1): Web3.to_checksum_address(
|
|
56
51
|
"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2"
|
|
57
52
|
), # Ethereum
|
|
58
|
-
42161: Web3.to_checksum_address(
|
|
53
|
+
ChainId(42161): Web3.to_checksum_address(
|
|
59
54
|
"0x794a61358D6845594F94dc1DB02A252b5b4814aD"
|
|
60
55
|
), # Arbitrum
|
|
61
|
-
8453: Web3.to_checksum_address(
|
|
56
|
+
ChainId(8453): Web3.to_checksum_address(
|
|
62
57
|
"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5"
|
|
63
58
|
), # Base
|
|
64
|
-
10: Web3.to_checksum_address(
|
|
59
|
+
ChainId(10): Web3.to_checksum_address(
|
|
65
60
|
"0x794a61358D6845594F94dc1DB02A252b5b4814aD"
|
|
66
61
|
), # Optimism
|
|
67
62
|
}
|
|
@@ -29,19 +29,19 @@ _addr = Web3.to_checksum_address
|
|
|
29
29
|
|
|
30
30
|
# Morpho Blue sits at its CREATE2 address (0xBBBB…EEFFCb) on Ethereum and Base
|
|
31
31
|
# only; every other chain carries an independent deployment. Keyed by chain ID.
|
|
32
|
-
MORPHO_BLUE_ADDRESSES: dict[
|
|
33
|
-
1: _addr("0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb"), # Ethereum
|
|
34
|
-
8453: _addr("0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb"), # Base
|
|
35
|
-
42161: _addr("0x6c247b1F6182318877311737BaC0844bAa518F5e"), # Arbitrum One
|
|
36
|
-
130: _addr("0x8f5ae9CddB9f68de460C77730b018Ae7E04a140A"), # Unichain
|
|
37
|
-
143: _addr("0xD5D960E8C380B724a48AC59E2DfF1b2CB4a1eAee"), # Monad
|
|
38
|
-
999: _addr("0x68e37dE8d93d3496ae143F2E900490f6280C57cD"), # HyperEVM
|
|
39
|
-
4663: _addr("0x9D53d5E3bd5E8d4Cbfa6DB1ca238AEA02E651010"), # Robinhood
|
|
40
|
-
747474: _addr("0xD50F2DffFd62f94Ee4AEd9ca05C61d0753268aBc"), # Katana
|
|
32
|
+
MORPHO_BLUE_ADDRESSES: dict[ChainId, ChecksumAddress] = {
|
|
33
|
+
ChainId(1): _addr("0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb"), # Ethereum
|
|
34
|
+
ChainId(8453): _addr("0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb"), # Base
|
|
35
|
+
ChainId(42161): _addr("0x6c247b1F6182318877311737BaC0844bAa518F5e"), # Arbitrum One
|
|
36
|
+
ChainId(130): _addr("0x8f5ae9CddB9f68de460C77730b018Ae7E04a140A"), # Unichain
|
|
37
|
+
ChainId(143): _addr("0xD5D960E8C380B724a48AC59E2DfF1b2CB4a1eAee"), # Monad
|
|
38
|
+
ChainId(999): _addr("0x68e37dE8d93d3496ae143F2E900490f6280C57cD"), # HyperEVM
|
|
39
|
+
ChainId(4663): _addr("0x9D53d5E3bd5E8d4Cbfa6DB1ca238AEA02E651010"), # Robinhood
|
|
40
|
+
ChainId(747474): _addr("0xD50F2DffFd62f94Ee4AEd9ca05C61d0753268aBc"), # Katana
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
def _chain_label(chain_id:
|
|
44
|
+
def _chain_label(chain_id: ChainId) -> str:
|
|
45
45
|
name = CHAIN_NAMES.get(chain_id)
|
|
46
46
|
return f"{chain_id} ({name})" if name else str(chain_id)
|
|
47
47
|
|
|
@@ -511,7 +511,7 @@ _register_markets([11], _decode_euler_v2)
|
|
|
511
511
|
# Async Action (typed: amount-to-outside / target+selector / exit slippage)
|
|
512
512
|
_register_markets([40], _decode_async_action)
|
|
513
513
|
# External State (typed: asset / target+selector / custodian / balance account
|
|
514
|
-
# / four uint248 guards).
|
|
514
|
+
# / four uint248 guards).
|
|
515
515
|
_register_markets([50], _decode_external_state)
|
|
516
516
|
# Uniswap V4 (id 53 per IporFusionMarkets.sol): PoolId or pool currency.
|
|
517
517
|
# TERM_FINANCE (52) stays unregistered on purpose — its substrate library is
|
|
@@ -539,10 +539,9 @@ _register_markets([55], _decode_hypercore)
|
|
|
539
539
|
|
|
540
540
|
|
|
541
541
|
def _build_market_lookup() -> dict[int, str]:
|
|
542
|
-
aliases = IporFusionMarkets._DEPRECATED_ALIASES
|
|
543
542
|
lookup: dict[int, str] = {}
|
|
544
543
|
for name in dir(IporFusionMarkets):
|
|
545
|
-
if name.startswith("_")
|
|
544
|
+
if name.startswith("_"):
|
|
546
545
|
continue
|
|
547
546
|
val = getattr(IporFusionMarkets, name)
|
|
548
547
|
if isinstance(val, int):
|
|
@@ -48,15 +48,15 @@ from ipor_fusion.vault_data import (
|
|
|
48
48
|
resolve_token_symbol,
|
|
49
49
|
)
|
|
50
50
|
|
|
51
|
-
BLOCK_EXPLORER_URLS: dict[
|
|
52
|
-
1: "https://etherscan.io",
|
|
53
|
-
42161: "https://arbiscan.io",
|
|
54
|
-
8453: "https://basescan.org",
|
|
55
|
-
10: "https://optimistic.etherscan.io",
|
|
56
|
-
137: "https://polygonscan.com",
|
|
57
|
-
56: "https://bscscan.com",
|
|
58
|
-
43114: "https://snowtrace.io",
|
|
59
|
-
250: "https://ftmscan.com",
|
|
51
|
+
BLOCK_EXPLORER_URLS: dict[ChainId, str] = {
|
|
52
|
+
ChainId(1): "https://etherscan.io",
|
|
53
|
+
ChainId(42161): "https://arbiscan.io",
|
|
54
|
+
ChainId(8453): "https://basescan.org",
|
|
55
|
+
ChainId(10): "https://optimistic.etherscan.io",
|
|
56
|
+
ChainId(137): "https://polygonscan.com",
|
|
57
|
+
ChainId(56): "https://bscscan.com",
|
|
58
|
+
ChainId(43114): "https://snowtrace.io",
|
|
59
|
+
ChainId(250): "https://ftmscan.com",
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
IPOR_APP_URL = "https://app.ipor.io/fusion"
|
|
@@ -15,7 +15,6 @@ from ipor_fusion.readers.lending_health import (
|
|
|
15
15
|
AAVE_V3_MARKET_IDS,
|
|
16
16
|
AAVE_V3_POOL,
|
|
17
17
|
AAVE_V4_MARKET_IDS,
|
|
18
|
-
MORPHO_BLUE_ADDRESS,
|
|
19
18
|
MORPHO_MARKET_IDS,
|
|
20
19
|
ORACLE_PRICE_SCALE,
|
|
21
20
|
LendingMarketHealth,
|
|
@@ -26,8 +25,8 @@ from ipor_fusion.readers.lending_health import (
|
|
|
26
25
|
_shares_to_assets_up,
|
|
27
26
|
fetch_vault_lending_health,
|
|
28
27
|
)
|
|
29
|
-
from ipor_fusion.readers.morpho import MorphoReader
|
|
30
|
-
from ipor_fusion.types import MorphoBlueMarketId
|
|
28
|
+
from ipor_fusion.readers.morpho import MorphoReader, morpho_blue_address
|
|
29
|
+
from ipor_fusion.types import ChainId, MorphoBlueMarketId
|
|
31
30
|
|
|
32
31
|
VAULT_ADDR = Web3.to_checksum_address("0x1111111111111111111111111111111111111111")
|
|
33
32
|
ORACLE_ADDR = Web3.to_checksum_address("0xdDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd")
|
|
@@ -84,7 +83,7 @@ def _aave_v4_substrate(spoke: str, reserve_id: int, flags: int) -> bytes:
|
|
|
84
83
|
|
|
85
84
|
def _make_morpho_reader():
|
|
86
85
|
ctx = MagicMock()
|
|
87
|
-
return MorphoReader(ctx,
|
|
86
|
+
return MorphoReader(ctx, morpho_blue_address(ChainId(1))), ctx
|
|
88
87
|
|
|
89
88
|
|
|
90
89
|
def _make_aave_reader():
|
|
@@ -246,12 +246,10 @@ def test_no_argument_calldata_matches_the_contract(path, function, calldata):
|
|
|
246
246
|
|
|
247
247
|
def test_market_ids_mirror_ipor_fusion_markets_sol():
|
|
248
248
|
solidity = _solidity_constants("IporFusionMarkets.sol")
|
|
249
|
-
aliases = IporFusionMarkets._DEPRECATED_ALIASES
|
|
250
249
|
python = {
|
|
251
250
|
name: value
|
|
252
251
|
for name in dir(IporFusionMarkets)
|
|
253
252
|
if not name.startswith("_")
|
|
254
|
-
and name not in aliases
|
|
255
253
|
and isinstance(value := getattr(IporFusionMarkets, name), int)
|
|
256
254
|
}
|
|
257
255
|
for name, value in _AHEAD_OF_UPSTREAM.items():
|
|
@@ -281,11 +281,8 @@ def test_market_without_decoder_is_labelled_not_guessed():
|
|
|
281
281
|
assert info.type_label == "no_decoder(VELODROME_SUPERCHAIN)"
|
|
282
282
|
|
|
283
283
|
|
|
284
|
-
def
|
|
285
|
-
# Market 50 is EXTERNAL_STATE; RWA remains a backward-compatible alias of
|
|
286
|
-
# the same value, but the canonical name is what id->name lookups display.
|
|
284
|
+
def test_external_state_is_market_50():
|
|
287
285
|
assert IporFusionMarkets.EXTERNAL_STATE == 50
|
|
288
|
-
assert IporFusionMarkets.RWA == IporFusionMarkets.EXTERNAL_STATE
|
|
289
286
|
assert market_name(50) == "EXTERNAL_STATE"
|
|
290
287
|
|
|
291
288
|
|
|
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.dev74 → ipor_fusion-4.0.0.dev78}/examples/advanced_euler_v2_credit_market_base.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/advanced_euler_v2_looping_arbitrum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/examples/external_state_margin_leg_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/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.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/cli/vault_markets_view.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
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/external_state_executor.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
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/core/withdraw_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/__init__.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/chainlink.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/codec.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/contracts.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/events.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/indexer.py
RENAMED
|
File without changes
|
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/quote.py
RENAMED
|
File without changes
|
{ipor_fusion-4.0.0.dev74 → ipor_fusion-4.0.0.dev78}/src/ipor_fusion/crosschain/ccip/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|