ipor-fusion 4.0.0.dev319__tar.gz → 4.0.0.dev327__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.
Files changed (356) hide show
  1. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/AGENTS.md +5 -0
  2. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/PKG-INFO +16 -1
  3. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/README.md +15 -0
  4. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/README.md +26 -0
  5. ipor_fusion-4.0.0.dev327/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +1460 -0
  6. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/hypercore_vault_official_deployment_hyperevm.py +5 -0
  7. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/pyproject.toml +1 -1
  8. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/base.py +4 -4
  9. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_ids.py +1 -4
  10. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/substrates.py +3 -12
  11. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_lifecycle.py +1 -1
  12. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_encoding.py +12 -8
  13. ipor_fusion-4.0.0.dev327/tests/test_examples_crosschain.py +312 -0
  14. ipor_fusion-4.0.0.dev327/tests/test_simulate_examples_crosschain.py +164 -0
  15. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.claude-plugin/marketplace.json +0 -0
  16. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.claude-plugin/plugin.json +0 -0
  17. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.env.example +0 -0
  18. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.gemini/settings.json +0 -0
  19. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.git-blame-ignore-revs +0 -0
  20. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/cd.yml +0 -0
  21. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/ci.yml +0 -0
  22. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/commit-lint.yml +0 -0
  23. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/notify-slack.yml +0 -0
  24. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-build.yml +0 -0
  25. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/python-publish.yml +0 -0
  26. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/release.yml +0 -0
  27. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.github/workflows/report-slack.yml +0 -0
  28. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.gitignore +0 -0
  29. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.mcp.json +0 -0
  30. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.pre-commit-config.yaml +0 -0
  31. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/.python-version +0 -0
  32. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CHANGELOG.md +0 -0
  33. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CLAUDE.md +0 -0
  34. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/CODEOWNERS +0 -0
  35. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/LICENSE +0 -0
  36. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/MIGRATION_4.md +0 -0
  37. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/build.sh +0 -0
  38. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/CONTRIBUTING.md +0 -0
  39. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_credit_market_base.py +0 -0
  40. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
  41. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/external_state_margin_leg_base.py +0 -0
  42. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/examples/simple_aave_v3_supply_base.py +0 -0
  43. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/pytest.ini +0 -0
  44. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/scripts/commit-check.sh +0 -0
  45. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/scripts/fusion_error_signatures.py +0 -0
  46. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/skills/ipor-deploy-vault/SKILL.md +0 -0
  47. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/__init__.py +0 -0
  48. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/about.py +0 -0
  49. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cache.py +0 -0
  50. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/chains.py +0 -0
  51. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/__init__.py +0 -0
  52. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/address_cmd.py +0 -0
  53. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
  54. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_cmd.py +0 -0
  55. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/config_store.py +0 -0
  56. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/main.py +0 -0
  57. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/market_cmd.py +0 -0
  58. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/options.py +0 -0
  59. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
  60. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/preflight_cmd.py +0 -0
  61. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_cmd.py +0 -0
  62. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_health.py +0 -0
  63. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_info_view.py +0 -0
  64. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
  65. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/cli/vault_rendering.py +0 -0
  66. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/__init__.py +0 -0
  67. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/config/roles.py +0 -0
  68. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/__init__.py +0 -0
  69. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/access.py +0 -0
  70. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/address.py +0 -0
  71. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context.py +0 -0
  72. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/context_manager.py +0 -0
  73. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/contract.py +0 -0
  74. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/erc20.py +0 -0
  75. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/external_state_executor.py +0 -0
  76. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fee_manager.py +0 -0
  77. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse.py +0 -0
  78. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_action.py +0 -0
  79. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fuse_decoding.py +0 -0
  80. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/fusion_factory.py +0 -0
  81. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/logs.py +0 -0
  82. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/multicall.py +0 -0
  83. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/oracle.py +0 -0
  84. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/plasma_vault.py +0 -0
  85. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/rewards_manager.py +0 -0
  86. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation.py +0 -0
  87. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/simulation_result.py +0 -0
  88. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/core/withdraw_manager.py +0 -0
  89. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/__init__.py +0 -0
  90. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
  91. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
  92. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
  93. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
  94. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
  95. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
  96. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
  97. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
  98. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
  99. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/contracts.py +0 -0
  100. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/discovery.py +0 -0
  101. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/errors.py +0 -0
  102. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
  103. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
  104. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
  105. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/lane.py +0 -0
  106. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/logs.py +0 -0
  107. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/messages.py +0 -0
  108. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/simulation.py +0 -0
  109. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
  110. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
  111. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
  112. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
  113. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
  114. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/crosschain/transport.py +0 -0
  115. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/dependency_graph.py +0 -0
  116. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_cli.py +0 -0
  117. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/entry_mcp.py +0 -0
  118. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/errors.py +0 -0
  119. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/explorer.py +0 -0
  120. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/field_docs.py +0 -0
  121. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/__init__.py +0 -0
  122. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/aave_v3.py +0 -0
  123. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/async_action.py +0 -0
  124. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/base.py +0 -0
  125. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/compound_v3.py +0 -0
  126. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/erc4626.py +0 -0
  127. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/euler_v2.py +0 -0
  128. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/events.py +0 -0
  129. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state.py +0 -0
  130. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
  131. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
  132. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
  133. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore.py +0 -0
  134. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/hypercore_event_decoding.py +0 -0
  135. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/merkl.py +0 -0
  136. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/morpho.py +0 -0
  137. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
  138. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
  139. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fuses/universal.py +0 -0
  140. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/fusion_errors.py +0 -0
  141. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/__init__.py +0 -0
  142. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/architecture.md +0 -0
  143. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/glossary.md +0 -0
  144. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/invariants.md +0 -0
  145. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/guide/quickstart.md +0 -0
  146. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/hypercore/__init__.py +0 -0
  147. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/market_info.py +0 -0
  148. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/__init__.py +0 -0
  149. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/guide.py +0 -0
  150. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/models.py +0 -0
  151. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/mcp/server.py +0 -0
  152. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/morpho_api.py +0 -0
  153. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/preflight.py +0 -0
  154. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/py.typed +0 -0
  155. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/__init__.py +0 -0
  156. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v3.py +0 -0
  157. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/aave_v4.py +0 -0
  158. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/compound_v3.py +0 -0
  159. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore.py +0 -0
  160. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
  161. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/lending_health.py +0 -0
  162. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/morpho.py +0 -0
  163. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
  164. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
  165. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
  166. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/position_manager.py +0 -0
  167. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/ramses_v2.py +0 -0
  168. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
  169. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/readers/unpriceable.py +0 -0
  170. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/registry.py +0 -0
  171. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/types.py +0 -0
  172. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/validation.py +0 -0
  173. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_data.py +0 -0
  174. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_erc20.py +0 -0
  175. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_info.py +0 -0
  176. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_managers.py +0 -0
  177. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_positions.py +0 -0
  178. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/src/ipor_fusion/vault_reads.py +0 -0
  179. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/UniswapV3UniversalRouter.py +0 -0
  180. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain.py +0 -0
  181. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_crosschain_recovery.py +0 -0
  182. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_euler_v2.py +0 -0
  183. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_event_args.py +0 -0
  184. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_fake_rpc.py +0 -0
  185. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_foundry.py +0 -0
  186. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_golden.py +0 -0
  187. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_guide.py +0 -0
  188. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_model.py +0 -0
  189. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_hypercore_shadow.py +0 -0
  190. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_live.py +0 -0
  191. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_multicall.py +0 -0
  192. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_oracle_mapping_fake.py +0 -0
  193. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_simulate.py +0 -0
  194. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/_validation.py +0 -0
  195. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/addresses.py +0 -0
  196. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/conftest.py +0 -0
  197. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/constants.py +0 -0
  198. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_hip3_flow.json +0 -0
  199. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_market55.json +0 -0
  200. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/hypercore_official.json +0 -0
  201. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
  202. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
  203. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
  204. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
  205. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
  206. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
  207. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
  208. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
  209. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.json +0 -0
  210. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
  211. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
  212. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
  213. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
  214. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
  215. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
  216. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
  217. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/simulate_v1_request.json +0 -0
  218. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.json +0 -0
  219. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
  220. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/clean.txt +0 -0
  221. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
  222. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
  223. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
  224. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
  225. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.json +0 -0
  226. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
  227. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.json +0 -0
  228. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.mcp.json +0 -0
  229. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/full.txt +0 -0
  230. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.json +0 -0
  231. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
  232. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/fixtures/vault_info_golden/rich.txt +0 -0
  233. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_about.py +0 -0
  234. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_access_manager.py +0 -0
  235. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cache.py +0 -0
  236. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_chains.py +0 -0
  237. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_address.py +0 -0
  238. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_changelog.py +0 -0
  239. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_commands.py +0 -0
  240. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_config_store.py +0 -0
  241. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_helpers.py +0 -0
  242. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_hypercore.py +0 -0
  243. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_lending_health.py +0 -0
  244. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_golden.py +0 -0
  245. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_market_morpho_blue.py +0 -0
  246. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_mcp_parity.py +0 -0
  247. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping.py +0 -0
  248. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_oracle_mapping_golden.py +0 -0
  249. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_pending_requests_scan.py +0 -0
  250. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_preflight.py +0 -0
  251. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_role_accounts.py +0 -0
  252. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_info_golden.py +0 -0
  253. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_predates_getters.py +0 -0
  254. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_cli_vault_validate.py +0 -0
  255. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_contract_call.py +0 -0
  256. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_contract_encoder.py +0 -0
  257. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_events.py +0 -0
  258. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_indexer.py +0 -0
  259. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_ccip_quote.py +0 -0
  260. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_chainlink.py +0 -0
  261. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_contracts.py +0 -0
  262. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_errors.py +0 -0
  263. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_lane.py +0 -0
  264. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_layering.py +0 -0
  265. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_crosschain_transport.py +0 -0
  266. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_docs_typing.py +0 -0
  267. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_erc20.py +0 -0
  268. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_error_hierarchy.py +0 -0
  269. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_euler_looping_arbitrum.py +0 -0
  270. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_hypercore_hyperevm.py +0 -0
  271. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_examples_vaults.py +0 -0
  272. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_explorer.py +0 -0
  273. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_events.py +0 -0
  274. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_external_state_executor.py +0 -0
  275. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fee_manager.py +0 -0
  276. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_decoding.py +0 -0
  277. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fuse_encoding.py +0 -0
  278. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_errors.py +0 -0
  279. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_fusion_instance.py +0 -0
  280. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_governance_wrappers.py +0 -0
  281. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_guide.py +0 -0
  282. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_deployment.py +0 -0
  283. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_events.py +0 -0
  284. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_flow.py +0 -0
  285. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_live.py +0 -0
  286. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_outcome.py +0 -0
  287. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_readers.py +0 -0
  288. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_hypercore_simulation.py +0 -0
  289. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_logs.py +0 -0
  290. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_address.py +0 -0
  291. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_hypercore.py +0 -0
  292. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_models.py +0 -0
  293. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_preflight.py +0 -0
  294. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_server.py +0 -0
  295. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_mcp_vault_validate.py +0 -0
  296. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_multicall.py +0 -0
  297. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_oracle.py +0 -0
  298. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_oracle_mapping.py +0 -0
  299. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_plasma_vault.py +0 -0
  300. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_preflight.py +0 -0
  301. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_public_api.py +0 -0
  302. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_public_type_reachability.py +0 -0
  303. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_reader_encoding.py +0 -0
  304. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_registry.py +0 -0
  305. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_revert_decoding.py +0 -0
  306. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_rewards_manager.py +0 -0
  307. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_roles.py +0 -0
  308. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_sdk_layering.py +0 -0
  309. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
  310. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
  311. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_claim_morpho_rewards.py +0 -0
  312. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_crosschain_hyperevm.py +0 -0
  313. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_batch_base.py +0 -0
  314. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
  315. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
  316. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
  317. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
  318. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_arbitrum.py +0 -0
  319. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_base.py +0 -0
  320. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_examples_hyperevm.py +0 -0
  321. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_external_state_executor_base.py +0 -0
  322. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
  323. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_aave_v3_base.py +0 -0
  324. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
  325. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_morpho_blue.py +0 -0
  326. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v3.py +0 -0
  327. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
  328. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_ramses.py +0 -0
  329. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
  330. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
  331. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_preflight_base.py +0 -0
  332. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_readers_integration.py +0 -0
  333. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_release_funds.py +0 -0
  334. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_swap_on_base.py +0 -0
  335. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_timelock_base.py +0 -0
  336. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulate_vault_from_scratch_base.py +0 -0
  337. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_errors.py +0 -0
  338. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_simulation_observation.py +0 -0
  339. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_compiler.py +0 -0
  340. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_solidity_mirrors.py +0 -0
  341. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_substrates.py +0 -0
  342. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_types_and_events.py +0 -0
  343. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_unpriceable_tokens.py +0 -0
  344. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_validation.py +0 -0
  345. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_data_block.py +0 -0
  346. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_dep_graph.py +0 -0
  347. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_fetched_golden.py +0 -0
  348. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base.py +0 -0
  349. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
  350. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_reconciliation_onchain_base.py +0 -0
  351. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_vault_simulator_blocks.py +0 -0
  352. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_web3_context.py +0 -0
  353. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/test_withdraw_manager.py +0 -0
  354. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/typed_client/consumer.py +0 -0
  355. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/tests/typed_client/rejected.py +0 -0
  356. {ipor_fusion-4.0.0.dev319 → ipor_fusion-4.0.0.dev327}/uv.lock +0 -0
@@ -79,6 +79,11 @@ supports only that release, so there is no live-pair generation. It needs
79
79
  `IPOR_FUSION_CONTRACTS_DIR` at that revision; a checkout without `node_modules` also
80
80
  needs `IPOR_FUSION_FOUNDRY_REMAPPINGS` for OpenZeppelin. `test_crosschain_ccip_events.py`
81
81
  mirrors the CCIP event registry from a checkout at its own `CONTRACTS_REVISION`.
82
+ `test_simulate_examples_crosschain.py` runs the crosschain example against the deployed
83
+ (unconfigured) release factory and fuses: it builds the executor and dispatcher creation
84
+ codes from the same checkout, linked against the example's `RELEASE_LIBRARIES`, proves the
85
+ deployed runtimes are that build, and needs `ARBITRUM_PROVIDER_URL`,
86
+ `HYPEREVM_PROVIDER_URL` and `IPOR_FUSION_CONTRACTS_DIR` (a missing one is an `_live` skip).
82
87
  `test_solidity_compiler.py` unit-tests that compiler helper (`tests/_foundry.py`)
83
88
  offline, with `forge` and `git` mocked. The checkout-based tests above skip when their
84
89
  external prerequisites are unavailable. `test_hypercore_live.py`,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ipor-fusion
3
- Version: 4.0.0.dev319
3
+ Version: 4.0.0.dev327
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
@@ -392,6 +392,10 @@ ever signed or broadcast.
392
392
  - [External-state margin leg](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/external_state_margin_leg_base.py) — a vault whose capital
393
393
  sits off-chain: typed market-50 substrates, a dual-custodian propose/confirm marking the NAV,
394
394
  the scheduled-withdrawal prep an alpha performs, and a mismatched confirmation being rejected.
395
+ - [Crosschain CCIP vault, Arbitrum hub and HyperEVM spoke](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py) —
396
+ the released crosschain contracts as deployed: configure the CCIP factory pair as its owner,
397
+ create both vaults and the executor, wire the crosschain market and NAV pre-hook, deploy the
398
+ dispatcher, then supply → attest → DEPOSIT → REDEEM → recall → claim USDC (preview feature).
395
399
  - [HyperCore vault on the official deployment](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/hypercore_vault_official_deployment_hyperevm.py) —
396
400
  a HyperEVM vault that trades on Hyperliquid Core (market 55, preview): wiring the published
397
401
  HyperCore fuses, pre-hooks and grants on a factory clone, and building the Core leg (bridge,
@@ -404,6 +408,17 @@ uv run python examples/advanced_euler_v2_credit_market_base.py
404
408
  uv run python examples/external_state_margin_leg_base.py
405
409
  ```
406
410
 
411
+ The crosschain example needs Arbitrum and HyperEVM archive RPCs and the executor and dispatcher
412
+ creation codes built with Foundry from the contracts release it pins; run without them, it prints
413
+ the `forge inspect` commands that build them:
414
+
415
+ ```bash
416
+ export ARBITRUM_PROVIDER_URL="https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY"
417
+ export HYPEREVM_PROVIDER_URL="https://YOUR_HYPEREVM_ARCHIVE_NODE"
418
+ export CCIP_EXECUTOR_CREATION_CODE_FILE=executor.hex CCIP_DISPATCHER_CREATION_CODE_FILE=dispatcher.hex
419
+ uv run python examples/crosschain_ccip_usdc_arbitrum_hyperevm.py
420
+ ```
421
+
407
422
  No RPC key? `BASE_PROVIDER_URL=https://mainnet.base.org` (Base's public RPC) runs the examples out of
408
423
  the box — it supports `eth_simulateV1` and serves their pinned blocks. It is rate-limited, so use a
409
424
  dedicated archive node for repeated or CI runs.
@@ -343,6 +343,10 @@ ever signed or broadcast.
343
343
  - [External-state margin leg](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/external_state_margin_leg_base.py) — a vault whose capital
344
344
  sits off-chain: typed market-50 substrates, a dual-custodian propose/confirm marking the NAV,
345
345
  the scheduled-withdrawal prep an alpha performs, and a mismatched confirmation being rejected.
346
+ - [Crosschain CCIP vault, Arbitrum hub and HyperEVM spoke](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py) —
347
+ the released crosschain contracts as deployed: configure the CCIP factory pair as its owner,
348
+ create both vaults and the executor, wire the crosschain market and NAV pre-hook, deploy the
349
+ dispatcher, then supply → attest → DEPOSIT → REDEEM → recall → claim USDC (preview feature).
346
350
  - [HyperCore vault on the official deployment](https://github.com/IPOR-Labs/ipor-fusion.py/blob/main/examples/hypercore_vault_official_deployment_hyperevm.py) —
347
351
  a HyperEVM vault that trades on Hyperliquid Core (market 55, preview): wiring the published
348
352
  HyperCore fuses, pre-hooks and grants on a factory clone, and building the Core leg (bridge,
@@ -355,6 +359,17 @@ uv run python examples/advanced_euler_v2_credit_market_base.py
355
359
  uv run python examples/external_state_margin_leg_base.py
356
360
  ```
357
361
 
362
+ The crosschain example needs Arbitrum and HyperEVM archive RPCs and the executor and dispatcher
363
+ creation codes built with Foundry from the contracts release it pins; run without them, it prints
364
+ the `forge inspect` commands that build them:
365
+
366
+ ```bash
367
+ export ARBITRUM_PROVIDER_URL="https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY"
368
+ export HYPEREVM_PROVIDER_URL="https://YOUR_HYPEREVM_ARCHIVE_NODE"
369
+ export CCIP_EXECUTOR_CREATION_CODE_FILE=executor.hex CCIP_DISPATCHER_CREATION_CODE_FILE=dispatcher.hex
370
+ uv run python examples/crosschain_ccip_usdc_arbitrum_hyperevm.py
371
+ ```
372
+
358
373
  No RPC key? `BASE_PROVIDER_URL=https://mainnet.base.org` (Base's public RPC) runs the examples out of
359
374
  the box — it supports `eth_simulateV1` and serves their pinned blocks. It is rate-limited, so use a
360
375
  dedicated archive node for repeated or CI runs.
@@ -38,6 +38,17 @@ transaction.
38
38
  brings the margin home and releases it for a user's scheduled withdrawal, then
39
39
  demonstrates the executor rejecting a confirmation that does not match its
40
40
  proposal.
41
+ - [`crosschain_ccip_usdc_arbitrum_hyperevm.py`](crosschain_ccip_usdc_arbitrum_hyperevm.py) --
42
+ a crosschain vault on the released CCIP contracts as they are deployed: an
43
+ Arbitrum hub vault, a HyperEVM spoke vault and USDC over Chainlink CCIP. It
44
+ configures the deployed (unconfigured) factory pair as its owner would --
45
+ creation codes, asset, route, dispatcher deployment gas limit through the
46
+ factory's 24 h timelock, the creator allowlist -- creates both vaults and the
47
+ executor, wires the crosschain market (the four fuses, the executor and
48
+ spoke-vault substrates, the NAV pre-hook), deploys the dispatcher through the
49
+ factory's deployment ticket, then drives supply, two-key attestation, DEPOSIT,
50
+ REDEEM, recall and claim. The crosschain SDK is a preview feature. It has
51
+ extra prerequisites, listed below.
41
52
  - [`hypercore_vault_official_deployment_hyperevm.py`](hypercore_vault_official_deployment_hyperevm.py) --
42
53
  a vault that is itself a Hyperliquid Core account (HyperCore, market 55; a
43
54
  preview feature). No live vault uses the official HyperCore contracts yet, so
@@ -69,6 +80,21 @@ transaction.
69
80
  your Arbitrum archive RPC endpoint. Never commit it or share it.
70
81
  - `HYPEREVM_PROVIDER_URL` (required by the crosschain example) -- your HyperEVM
71
82
  archive RPC endpoint. Never commit it or share it.
83
+ - `CCIP_EXECUTOR_CREATION_CODE_FILE` and `CCIP_DISPATCHER_CREATION_CODE_FILE`
84
+ (required by the crosschain example) -- files holding the hex creation code of
85
+ `CcipCrosschainExecutor` and `CcipCrosschainDispatcher`, built with Foundry
86
+ (`forge`) in a checkout of
87
+ [ipor-fusion](https://github.com/IPOR-Labs/ipor-fusion) at the release commit
88
+ the example pins (`RELEASE_COMMIT`), after `npm ci`. Run the example without
89
+ them and it prints the two `forge inspect` commands, which link the deployed
90
+ release libraries; it refuses codes whose hashes differ from the release's.
91
+
92
+ The crosschain example's own test (`tests/test_simulate_examples_crosschain.py`)
93
+ builds those codes itself, so it needs `ARBITRUM_PROVIDER_URL`,
94
+ `HYPEREVM_PROVIDER_URL`, `forge` and `IPOR_FUSION_CONTRACTS_DIR` -- that checkout
95
+ -- (plus `IPOR_FUSION_FOUNDRY_REMAPPINGS` when it has no `node_modules`). Pull
96
+ request CI supplies neither the HyperEVM RPC nor the checkout, so it skips there;
97
+ run it locally.
72
98
 
73
99
  ## Running
74
100