ipor-fusion 4.0.0.dev129__tar.gz → 4.0.0.dev139__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.dev129 → ipor_fusion-4.0.0.dev139}/AGENTS.md +9 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/MIGRATION_4.md +564 -408
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/PKG-INFO +24 -9
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/README.md +23 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/advanced_euler_v2_credit_market_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/advanced_euler_v2_looping_arbitrum.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +8 -9
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +4 -5
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/external_state_margin_leg_base.py +4 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/simple_aave_v3_supply_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/pyproject.toml +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/scripts/crosschain_readiness.py +5 -7
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/skills/ipor-deploy-vault/SKILL.md +17 -12
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/__init__.py +10 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/market_cmd.py +9 -9
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/options.py +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/vault_cmd.py +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/access.py +9 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/context.py +2 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/contract.py +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/external_state_executor.py +18 -13
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/multicall.py +1 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/oracle.py +5 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/plasma_vault.py +6 -5
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/__init__.py +8 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/__init__.py +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/chainlink.py +9 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/codec.py +8 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/contracts.py +5 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/indexer.py +1 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/transport.py +3 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/fuses/ccip.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/lane.py +67 -5
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/dependency_graph.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/errors.py +19 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/explorer.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/__init__.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/external_state_events.py +1 -7
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/hypercore.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/guide/architecture.md +6 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/guide/glossary.md +3 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/guide/invariants.md +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/guide/quickstart.md +16 -11
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/market_info.py +6 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/mcp/server.py +10 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/hypercore.py +11 -9
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/hypercore_outcome.py +2 -5
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/unpriceable.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/substrates.py +2 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/types.py +2 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_data.py +6 -6
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_crosschain.py +1 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_crosschain_lifecycle.py +6 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_guide.py +3 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_access_manager.py +14 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_commands.py +1 -1
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_oracle_mapping.py +7 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_lane.py +110 -1
- ipor_fusion-4.0.0.dev139/tests/test_docs_typing.py +72 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_error_hierarchy.py +12 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_explorer.py +11 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_external_state_executor.py +4 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_fuse_encoding.py +3 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_deployment.py +1 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_live.py +8 -6
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_outcome.py +1 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_readers.py +6 -6
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_simulation.py +0 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_mcp_server.py +7 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_public_api.py +10 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_borrow_aave_v3_mainnet.py +6 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_claim_merkl_wrapper_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_claim_morpho_rewards.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_crosschain_hypercore.py +1 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_crosschain_hyperevm.py +1 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_euler_v2_batch_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_euler_v2_credit_market_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_euler_v2_swap_deploy_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_euler_v2_swap_registry_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_external_state_executor_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_looping_aave_v3_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_looping_morpho_blue_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_morpho_blue.py +0 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_pilot_v3.py +12 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_pilot_v4_uniswap.py +15 -10
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_pilot_v5_ramses.py +12 -8
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_pilot_v5_scheduled.py +18 -12
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_readers_integration.py +1 -3
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_release_funds.py +6 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_swap_on_base.py +6 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_vault_from_scratch_base.py +3 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_unpriceable_tokens.py +5 -5
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +1 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_web3_context.py +2 -4
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/typed_client/consumer.py +62 -2
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/typed_client/rejected.py +28 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.claude-plugin/marketplace.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.claude-plugin/plugin.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.env.example +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.gemini/settings.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.git-blame-ignore-revs +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/cd.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/ci.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/commit-lint.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/notify-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/python-build.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/python-publish.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/release.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.github/workflows/report-slack.yml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.gitignore +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.mcp.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.pre-commit-config.yaml +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/.python-version +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/CHANGELOG.md +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/CLAUDE.md +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/CODEOWNERS +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/LICENSE +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/build.sh +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/CONTRIBUTING.md +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/examples/README.md +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/pytest.ini +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/scripts/commit-check.sh +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/about.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cache.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/chains.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/config_cmd.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/config_store.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/main.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/vault_health.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/vault_info_view.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/cli/vault_rendering.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/config/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/config/roles.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/address.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/erc20.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/fuse.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/fuse_action.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/fusion_factory.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/logs.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/core/withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/discovery.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/errors.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/logs.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/messages.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/simulation.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/crosschain/transport.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/entry_cli.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/entry_mcp.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/field_docs.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/async_action.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/erc4626.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/external_state.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/merkl.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/fuses/universal.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/guide/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/market_ids.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/mcp/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/mcp/guide.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/mcp/models.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/morpho_api.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/py.typed +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/__init__.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/aave_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/aave_v4.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/compound_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/morpho.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/position_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/ramses_v2.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/validation.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_info.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_managers.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_positions.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/src/ipor_fusion/vault_reads.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/UniswapV3UniversalRouter.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_crosschain_recovery.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_euler_v2.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_foundry.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_hypercore_model.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_hypercore_shadow.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_simulate.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/_validation.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/addresses.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/conftest.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/constants.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/hypercore_hip3_flow.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/hypercore_market55.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/vault_info_golden/clean.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/vault_info_golden/clean.txt +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/vault_info_golden/rich.json +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/fixtures/vault_info_golden/rich.txt +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_about.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cache.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_chains.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_changelog.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_config_store.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_helpers.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_lending_health.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_market_morpho_blue.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_pending_requests_scan.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_role_accounts.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_vault_info_golden.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_vault_predates_getters.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_cli_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_contract_call.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_contract_encoder.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_ccip_events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_ccip_indexer.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_ccip_quote.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_chainlink.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_contracts.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_errors.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_layering.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_readiness.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_readiness_report.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_crosschain_transport.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_erc20.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_examples_composed_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_examples_euler_looping_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_examples_vaults.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_external_state_events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_fee_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_fusion_instance.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_guide.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_hypercore_flow.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_logs.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_mcp_hypercore.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_mcp_models.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_mcp_vault_validate.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_multicall.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_oracle.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_oracle_mapping.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_plasma_vault.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_public_type_reachability.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_reader_encoding.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_readiness_selection.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_revert_decoding.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_rewards_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_roles.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_sdk_layering.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_crosschain_canary.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_crosschain_lifecycle.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_examples_arbitrum.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_examples_base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_examples_crosschain.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_solidity_compiler.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_solidity_mirrors.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_substrates.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_types_and_events.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_validation.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_vault_dep_graph.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_vault_info_onchain_base.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_vault_simulator_blocks.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/tests/test_withdraw_manager.py +0 -0
- {ipor_fusion-4.0.0.dev129 → ipor_fusion-4.0.0.dev139}/uv.lock +0 -0
|
@@ -186,7 +186,8 @@ the lifecycle matrix follows that.
|
|
|
186
186
|
|
|
187
187
|
## Layout (`src/ipor_fusion/`)
|
|
188
188
|
|
|
189
|
-
- `chains.py` chain registry; `market_ids.py` `IporFusionMarkets`; `types.py
|
|
189
|
+
- `chains.py` chain registry; `market_ids.py` `IporFusionMarkets`; `types.py`; `errors.py`
|
|
190
|
+
defines every SDK exception class (`tests/test_error_hierarchy.py` pins it)
|
|
190
191
|
- `about.py` — package version, repository URL, CHANGELOG parsing (`fusion changelog`,
|
|
191
192
|
`server_info`); `field_docs.py` — `DOCS`, the JSON field descriptions shared by CLI
|
|
192
193
|
output and MCP models
|
|
@@ -311,13 +312,18 @@ or examples.
|
|
|
311
312
|
that depends on another read) is named `read_*` and takes `ctx` first:
|
|
312
313
|
`PlasmaVault.read_balance_fuses(ctx)`, `AccessManager.read_all_role_accounts(ctx)`,
|
|
313
314
|
`MorphoReader.read_rates(ctx, id)`. Decide by the I/O a method performs, not
|
|
314
|
-
by the class name
|
|
315
|
+
by the class name; the prefix is reserved for that, so a method that builds
|
|
316
|
+
a `Call` offline (`PlasmaVault.universal_read`) or a pure helper
|
|
317
|
+
(`precompile_index_of`) never takes it. Resolvers that probe the chain to pick a wrapper
|
|
315
318
|
(`price_oracle_middleware(ctx, a)`, `resolve_access_manager`,
|
|
316
319
|
`ExternalStateExecutor.for_vault`) return context-free wrappers. Executors
|
|
317
320
|
and orchestrators own their contexts: `Multicall3(ctx)`, `VaultSimulator`,
|
|
318
321
|
`CrosschainSimulator`, `OracleMappingReader(ctx, oracle)` and
|
|
319
322
|
`CrosschainLane` (`hub_ctx` for the executor, `spoke_ctx` for the
|
|
320
|
-
dispatcher at the same address
|
|
323
|
+
dispatcher at the same address; its eager `read_hub_state()` and
|
|
324
|
+
`read_observation()` run on the right one, and its Calls on whichever the
|
|
325
|
+
caller picks). A context is pinned by copy, `ctx.at_block(n)`;
|
|
326
|
+
`default_block` is read-only.
|
|
321
327
|
A chain-dependent decode takes the chain explicitly
|
|
322
328
|
(`ExternalStateExecutor.pending_proposals(account, chain_id=)`); a decoder
|
|
323
329
|
never consults the executing context.
|