ipor-fusion 4.0.0.dev282__tar.gz → 4.0.0.dev286__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 (350) hide show
  1. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/MIGRATION_4.md +37 -0
  2. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/PKG-INFO +1 -1
  3. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/pyproject.toml +1 -1
  4. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/hypercore.py +37 -14
  5. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/hypercore_event_decoding.py +3 -133
  6. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/hypercore/__init__.py +4 -28
  7. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/mcp/models.py +16 -4
  8. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/hypercore.py +93 -92
  9. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/substrates.py +93 -41
  10. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_info.py +12 -8
  11. ipor_fusion-4.0.0.dev286/tests/fixtures/hypercore_official.json +16 -0
  12. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/full.json +6 -3
  13. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/full.mcp.json +7 -4
  14. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_vault_info_golden.py +7 -5
  15. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_fuse_encoding.py +10 -2
  16. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_deployment.py +14 -0
  17. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_events.py +15 -1
  18. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_flow.py +2 -5
  19. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_live.py +14 -18
  20. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_readers.py +107 -64
  21. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_mcp_hypercore.py +8 -6
  22. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_mcp_models.py +7 -3
  23. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_public_api.py +2 -14
  24. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_substrates.py +19 -3
  25. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/typed_client/consumer.py +1 -1
  26. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.claude-plugin/marketplace.json +0 -0
  27. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.claude-plugin/plugin.json +0 -0
  28. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.env.example +0 -0
  29. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.gemini/settings.json +0 -0
  30. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.git-blame-ignore-revs +0 -0
  31. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/cd.yml +0 -0
  32. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/ci.yml +0 -0
  33. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/commit-lint.yml +0 -0
  34. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/notify-slack.yml +0 -0
  35. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/python-build.yml +0 -0
  36. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/python-publish.yml +0 -0
  37. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/release.yml +0 -0
  38. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.github/workflows/report-slack.yml +0 -0
  39. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.gitignore +0 -0
  40. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.mcp.json +0 -0
  41. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.pre-commit-config.yaml +0 -0
  42. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/.python-version +0 -0
  43. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/AGENTS.md +0 -0
  44. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/CHANGELOG.md +0 -0
  45. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/CLAUDE.md +0 -0
  46. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/CODEOWNERS +0 -0
  47. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/LICENSE +0 -0
  48. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/README.md +0 -0
  49. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/build.sh +0 -0
  50. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/CONTRIBUTING.md +0 -0
  51. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/README.md +0 -0
  52. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/advanced_euler_v2_credit_market_base.py +0 -0
  53. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/advanced_euler_v2_looping_arbitrum.py +0 -0
  54. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/composed_hypercore_flow_arbitrum_hyperevm.py +0 -0
  55. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/crosschain_ccip_usdc_arbitrum_hyperevm.py +0 -0
  56. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/external_state_margin_leg_base.py +0 -0
  57. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/examples/simple_aave_v3_supply_base.py +0 -0
  58. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/pytest.ini +0 -0
  59. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/scripts/commit-check.sh +0 -0
  60. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/scripts/crosschain_readiness.py +0 -0
  61. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/skills/ipor-deploy-vault/SKILL.md +0 -0
  62. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/__init__.py +0 -0
  63. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/about.py +0 -0
  64. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cache.py +0 -0
  65. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/chains.py +0 -0
  66. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/__init__.py +0 -0
  67. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/address_cmd.py +0 -0
  68. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/changelog_cmd.py +0 -0
  69. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/config_cmd.py +0 -0
  70. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/config_store.py +0 -0
  71. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/main.py +0 -0
  72. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/market_cmd.py +0 -0
  73. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/options.py +0 -0
  74. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/oracle_mapping_view.py +0 -0
  75. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/vault_cmd.py +0 -0
  76. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/vault_health.py +0 -0
  77. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/vault_info_view.py +0 -0
  78. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/vault_markets_view.py +0 -0
  79. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/cli/vault_rendering.py +0 -0
  80. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/config/__init__.py +0 -0
  81. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/config/roles.py +0 -0
  82. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/__init__.py +0 -0
  83. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/access.py +0 -0
  84. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/address.py +0 -0
  85. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/context.py +0 -0
  86. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/context_manager.py +0 -0
  87. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/contract.py +0 -0
  88. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/erc20.py +0 -0
  89. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/external_state_executor.py +0 -0
  90. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/fee_manager.py +0 -0
  91. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/fuse.py +0 -0
  92. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/fuse_action.py +0 -0
  93. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/fusion_factory.py +0 -0
  94. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/logs.py +0 -0
  95. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/multicall.py +0 -0
  96. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/oracle.py +0 -0
  97. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/plasma_vault.py +0 -0
  98. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/rewards_manager.py +0 -0
  99. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/simulation.py +0 -0
  100. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/simulation_result.py +0 -0
  101. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/core/withdraw_manager.py +0 -0
  102. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/__init__.py +0 -0
  103. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/__init__.py +0 -0
  104. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/chainlink.py +0 -0
  105. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/codec.py +0 -0
  106. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/contracts.py +0 -0
  107. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/events.py +0 -0
  108. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/indexer.py +0 -0
  109. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/lane.py +0 -0
  110. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/quote.py +0 -0
  111. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/ccip/transport.py +0 -0
  112. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/contracts.py +0 -0
  113. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/discovery.py +0 -0
  114. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/errors.py +0 -0
  115. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/fuses/__init__.py +0 -0
  116. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/fuses/base.py +0 -0
  117. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/fuses/ccip.py +0 -0
  118. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/fuses/stargate.py +0 -0
  119. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/lane.py +0 -0
  120. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/logs.py +0 -0
  121. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/messages.py +0 -0
  122. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/simulation.py +0 -0
  123. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/stargate/__init__.py +0 -0
  124. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/stargate/contracts.py +0 -0
  125. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/stargate/lane.py +0 -0
  126. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/stargate/layerzero.py +0 -0
  127. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/stargate/transport.py +0 -0
  128. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/crosschain/transport.py +0 -0
  129. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/dependency_graph.py +0 -0
  130. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/entry_cli.py +0 -0
  131. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/entry_mcp.py +0 -0
  132. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/errors.py +0 -0
  133. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/explorer.py +0 -0
  134. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/field_docs.py +0 -0
  135. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/__init__.py +0 -0
  136. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/aave_v3.py +0 -0
  137. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/async_action.py +0 -0
  138. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/base.py +0 -0
  139. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/compound_v3.py +0 -0
  140. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/erc4626.py +0 -0
  141. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/euler_v2.py +0 -0
  142. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/events.py +0 -0
  143. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/external_state.py +0 -0
  144. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/external_state_event_decoding.py +0 -0
  145. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/fluid_instadapp.py +0 -0
  146. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/gearbox_v3.py +0 -0
  147. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/merkl.py +0 -0
  148. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/morpho.py +0 -0
  149. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/ramses_v2.py +0 -0
  150. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/uniswap_v3.py +0 -0
  151. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/fuses/universal.py +0 -0
  152. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/guide/__init__.py +0 -0
  153. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/guide/architecture.md +0 -0
  154. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/guide/glossary.md +0 -0
  155. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/guide/invariants.md +0 -0
  156. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/guide/quickstart.md +0 -0
  157. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/market_ids.py +0 -0
  158. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/market_info.py +0 -0
  159. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/mcp/__init__.py +0 -0
  160. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/mcp/guide.py +0 -0
  161. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/mcp/server.py +0 -0
  162. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/morpho_api.py +0 -0
  163. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/py.typed +0 -0
  164. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/__init__.py +0 -0
  165. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/aave_v3.py +0 -0
  166. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/aave_v4.py +0 -0
  167. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/compound_v3.py +0 -0
  168. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/hypercore_outcome.py +0 -0
  169. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/lending_health.py +0 -0
  170. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/morpho.py +0 -0
  171. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/oracle_mapping.py +0 -0
  172. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/oracle_mapping_nodes.py +0 -0
  173. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/oracle_mapping_reader.py +0 -0
  174. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/position_manager.py +0 -0
  175. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/ramses_v2.py +0 -0
  176. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/uniswap_v3.py +0 -0
  177. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/readers/unpriceable.py +0 -0
  178. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/registry.py +0 -0
  179. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/types.py +0 -0
  180. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/validation.py +0 -0
  181. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_data.py +0 -0
  182. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_erc20.py +0 -0
  183. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_managers.py +0 -0
  184. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_positions.py +0 -0
  185. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/src/ipor_fusion/vault_reads.py +0 -0
  186. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/UniswapV3UniversalRouter.py +0 -0
  187. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_crosschain.py +0 -0
  188. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_crosschain_lifecycle.py +0 -0
  189. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_crosschain_recovery.py +0 -0
  190. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_euler_v2.py +0 -0
  191. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_event_args.py +0 -0
  192. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_fake_rpc.py +0 -0
  193. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_foundry.py +0 -0
  194. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_golden.py +0 -0
  195. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_guide.py +0 -0
  196. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_hypercore_model.py +0 -0
  197. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_hypercore_shadow.py +0 -0
  198. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_live.py +0 -0
  199. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_multicall.py +0 -0
  200. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_oracle_mapping_fake.py +0 -0
  201. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_simulate.py +0 -0
  202. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/_validation.py +0 -0
  203. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/addresses.py +0 -0
  204. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/conftest.py +0 -0
  205. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/constants.py +0 -0
  206. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/hypercore_hip3_flow.json +0 -0
  207. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/hypercore_market55.json +0 -0
  208. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/meta_morpho_v1.json +0 -0
  209. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/meta_morpho_v1.mcp.json +0 -0
  210. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/meta_morpho_v2.json +0 -0
  211. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/meta_morpho_v2.mcp.json +0 -0
  212. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_api/market.json +0 -0
  213. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_api/vault_v1.json +0 -0
  214. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_api/vault_v2.json +0 -0
  215. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_api/vault_v2_not_found.json +0 -0
  216. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue.json +0 -0
  217. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue.mcp.json +0 -0
  218. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue_api_error.json +0 -0
  219. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue_api_error.mcp.json +0 -0
  220. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue_no_api.json +0 -0
  221. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/market_golden/morpho_blue_no_api.mcp.json +0 -0
  222. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/oracle_mapping_golden/mapping.json +0 -0
  223. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/oracle_mapping_golden/mapping.mcp.json +0 -0
  224. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/simulate_v1_request.json +0 -0
  225. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/clean.json +0 -0
  226. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/clean.mcp.json +0 -0
  227. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/clean.txt +0 -0
  228. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/deployment_error.json +0 -0
  229. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/deployment_error.mcp.json +0 -0
  230. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/deployment_error.txt +0 -0
  231. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/fetched.cli.json +0 -0
  232. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/fetched.json +0 -0
  233. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/fetched.mcp.json +0 -0
  234. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/full.txt +0 -0
  235. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/rich.json +0 -0
  236. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/rich.mcp.json +0 -0
  237. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/fixtures/vault_info_golden/rich.txt +0 -0
  238. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_about.py +0 -0
  239. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_access_manager.py +0 -0
  240. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cache.py +0 -0
  241. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_chains.py +0 -0
  242. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_address.py +0 -0
  243. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_changelog.py +0 -0
  244. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_commands.py +0 -0
  245. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_config_store.py +0 -0
  246. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_helpers.py +0 -0
  247. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_hypercore.py +0 -0
  248. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_lending_health.py +0 -0
  249. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_market_golden.py +0 -0
  250. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_market_morpho_blue.py +0 -0
  251. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_mcp_parity.py +0 -0
  252. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_oracle_mapping.py +0 -0
  253. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_oracle_mapping_golden.py +0 -0
  254. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_pending_requests_scan.py +0 -0
  255. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_role_accounts.py +0 -0
  256. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_vault_predates_getters.py +0 -0
  257. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_cli_vault_validate.py +0 -0
  258. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_contract_call.py +0 -0
  259. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_contract_encoder.py +0 -0
  260. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_ccip_events.py +0 -0
  261. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_ccip_indexer.py +0 -0
  262. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_ccip_quote.py +0 -0
  263. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_chainlink.py +0 -0
  264. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_contracts.py +0 -0
  265. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_encoding.py +0 -0
  266. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_errors.py +0 -0
  267. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_lane.py +0 -0
  268. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_layering.py +0 -0
  269. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_readiness.py +0 -0
  270. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_readiness_report.py +0 -0
  271. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_crosschain_transport.py +0 -0
  272. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_docs_typing.py +0 -0
  273. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_erc20.py +0 -0
  274. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_error_hierarchy.py +0 -0
  275. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_examples_composed_hypercore.py +0 -0
  276. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_examples_crosschain.py +0 -0
  277. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_examples_euler_looping_arbitrum.py +0 -0
  278. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_examples_vaults.py +0 -0
  279. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_explorer.py +0 -0
  280. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_external_state_events.py +0 -0
  281. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_external_state_executor.py +0 -0
  282. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_fee_manager.py +0 -0
  283. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_fusion_instance.py +0 -0
  284. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_governance_wrappers.py +0 -0
  285. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_guide.py +0 -0
  286. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_outcome.py +0 -0
  287. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_hypercore_simulation.py +0 -0
  288. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_logs.py +0 -0
  289. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_mcp_address.py +0 -0
  290. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_mcp_server.py +0 -0
  291. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_mcp_vault_validate.py +0 -0
  292. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_multicall.py +0 -0
  293. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_oracle.py +0 -0
  294. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_oracle_mapping.py +0 -0
  295. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_plasma_vault.py +0 -0
  296. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_public_type_reachability.py +0 -0
  297. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_reader_encoding.py +0 -0
  298. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_readiness_selection.py +0 -0
  299. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_registry.py +0 -0
  300. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_revert_decoding.py +0 -0
  301. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_rewards_manager.py +0 -0
  302. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_roles.py +0 -0
  303. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_sdk_layering.py +0 -0
  304. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_borrow_aave_v3_mainnet.py +0 -0
  305. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_claim_merkl_wrapper_base.py +0 -0
  306. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_claim_morpho_rewards.py +0 -0
  307. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_crosschain_canary.py +0 -0
  308. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_crosschain_hypercore.py +0 -0
  309. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_crosschain_hyperevm.py +0 -0
  310. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_crosschain_lifecycle.py +0 -0
  311. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_euler_v2_batch_base.py +0 -0
  312. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_euler_v2_credit_market_base.py +0 -0
  313. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_euler_v2_swap_deploy_base.py +0 -0
  314. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_euler_v2_swap_reconfigure_base.py +0 -0
  315. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_euler_v2_swap_registry_base.py +0 -0
  316. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_examples_arbitrum.py +0 -0
  317. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_examples_base.py +0 -0
  318. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_examples_crosschain.py +0 -0
  319. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_external_state_executor_base.py +0 -0
  320. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_fusion_factory_clone_base.py +0 -0
  321. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_looping_aave_v3_base.py +0 -0
  322. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_looping_morpho_blue_base.py +0 -0
  323. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_morpho_blue.py +0 -0
  324. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_pilot_v3.py +0 -0
  325. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_pilot_v4_uniswap.py +0 -0
  326. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_pilot_v5_ramses.py +0 -0
  327. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_pilot_v5_scheduled.py +0 -0
  328. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_plasma_vault_setters_base.py +0 -0
  329. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_readers_integration.py +0 -0
  330. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_release_funds.py +0 -0
  331. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_swap_on_base.py +0 -0
  332. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulate_vault_from_scratch_base.py +0 -0
  333. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulation_errors.py +0 -0
  334. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_simulation_observation.py +0 -0
  335. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_solidity_compiler.py +0 -0
  336. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_solidity_mirrors.py +0 -0
  337. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_types_and_events.py +0 -0
  338. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_unpriceable_tokens.py +0 -0
  339. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_validation.py +0 -0
  340. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_data_block.py +0 -0
  341. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_dep_graph.py +0 -0
  342. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_info_fetched_golden.py +0 -0
  343. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_info_onchain_base.py +0 -0
  344. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_info_onchain_base_no_withdraw_manager.py +0 -0
  345. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_reconciliation_onchain_base.py +0 -0
  346. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_vault_simulator_blocks.py +0 -0
  347. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_web3_context.py +0 -0
  348. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/test_withdraw_manager.py +0 -0
  349. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/tests/typed_client/rejected.py +0 -0
  350. {ipor_fusion-4.0.0.dev282 → ipor_fusion-4.0.0.dev286}/uv.lock +0 -0
@@ -390,6 +390,43 @@ module was renamed to match. Import the decoders with `from ipor_fusion import
390
390
  external_state_events` and `from ipor_fusion.hypercore import hypercore_events`;
391
391
  the modules are internal.
392
392
 
393
+ #### HyperCore follows the released contracts
394
+
395
+ 4.0 reads and encodes the HyperCore contracts `ipor-abi` publishes on HyperEVM
396
+ (contracts release 2026-10-21), not the earlier market-55 test deployment.
397
+
398
+ - **Pending reader.** `HYPERCORE_PENDING_READERS[999]` is
399
+ `0x1EFFb12434f5fb59a636C54D8CBaC93b13DF1A9E`. `HyperCorePendingReader.is_pending()`
400
+ is gone (the released reader has no `isPending()`): call `is_action_pending()`,
401
+ and `is_order_in_flight()` for the order rate limit. `pending_state()` decodes
402
+ the released 23-word tuple only; the earlier reader `0x83F54bc9…` returns 18
403
+ words and is no longer supported. A vault of the earlier build (its pre-hooks
404
+ predate the transfer effect) reads through the released reader only while
405
+ nothing is in flight: the struct only grew, so a settled state decodes the same,
406
+ but during an action the released reader derives `pending`/`settled` from effect
407
+ fields the earlier hooks never write, so it can disagree with what that vault
408
+ enforces.
409
+ - **`HyperCorePendingState`.** Removed: `settlement_mode`, `reported_result`,
410
+ `result_l1_block`, `refreshing` (the contracts no longer write them). Added:
411
+ `effect_kind` (`HyperCoreEffectKind`), `effect_token_index`, `effect_evm_asset`,
412
+ `expected_balance`, `timeout_at`, `last_order_l1_block`. A transfer with an effect
413
+ settles when the expected balance is observed or `timeout_at` passes.
414
+ - **`vault info` / `vault_info`.** `hypercore.pending` drops `refreshing`,
415
+ `settlement_mode`, `reported_result` and gains the six fields above.
416
+ - **Settlement mode removed.** `SettlementMode` and `HyperCoreReportedResult` are
417
+ gone, and so are the settlement fuse and reporter events
418
+ (`HyperCoreReportedActionSettled`, `ReportSubmitted`, `ObserverSetProposed`,
419
+ `ObserverSetChanged`, `RecoveryProposed`, `RecoveryExecuted` and their `*Args`
420
+ / `*Event` classes): orders settle by time, transfers by time and effect.
421
+ `HyperCoreConfigKey.WINDOW_ORDER_SECONDS` and `SETTLEMENT_MODE` keep their
422
+ numbers but are reserved and ignored (`RESERVED_HYPERCORE_CONFIG_KEYS`); a
423
+ decoded substrate of either carries `extra["reserved"] == "true"`.
424
+ - **New substrates.** `HyperCoreSubstrates.perp_position_cap(asset,
425
+ max_position_notional_usd6)` (type 7) and `HyperCoreConfigKey`
426
+ `TRANSFER_TIMEOUT_SECONDS`, `ACTIVATION_FEE_ALLOWANCE_USDC_WEI`, `MAX_NAV_JUMP_BPS`,
427
+ `MAX_MARK_ORACLE_DEVIATION_BPS`, `NAV_JUMP_FLOOR_USD6` (7..11); `decode_substrate`
428
+ decodes them instead of flagging them as errors.
429
+
393
430
  **Removed.**
394
431
 
395
432
  - `IporFusionMarkets.RWA`: market 50 is `IporFusionMarkets.EXTERNAL_STATE`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ipor-fusion
3
- Version: 4.0.0.dev282
3
+ Version: 4.0.0.dev286
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ipor-fusion"
3
- version = "4.0.0.dev282"
3
+ version = "4.0.0.dev286"
4
4
  description = "The IPOR Fusion SDK for Python"
5
5
  authors = [
6
6
  { name = "Adam Mydlarz", email = "amydlarz@gmail.com" },
@@ -95,15 +95,12 @@ class TimeInForce(IntEnum):
95
95
  IOC = 3
96
96
 
97
97
 
98
- class SettlementMode(IntEnum):
99
- """``Config{SettlementMode}``: how a pending action is cleared."""
100
-
101
- TIMING = 1
102
- REPORTED = 2
103
-
104
-
105
98
  class HyperCoreConfigKey(IntEnum):
106
- """``HyperCoreSubstrateLib.ConfigKey`` (the Undefined member is invalid)."""
99
+ """``HyperCoreSubstrateLib.ConfigKey`` (the Undefined member is invalid).
100
+
101
+ The numbering is stable: ``WINDOW_ORDER_SECONDS`` (2) and
102
+ ``SETTLEMENT_MODE`` (5) are reserved and ignored by the fuses; orders
103
+ settle by time and the observed effect only."""
107
104
 
108
105
  WINDOW_TRANSFER_SECONDS = 1
109
106
  WINDOW_ORDER_SECONDS = 2
@@ -111,6 +108,17 @@ class HyperCoreConfigKey(IntEnum):
111
108
  PERP_DEX_IDS = 4
112
109
  SETTLEMENT_MODE = 5
113
110
  SPOT_SEND_BRIDGE_ENABLED = 6
111
+ TRANSFER_TIMEOUT_SECONDS = 7
112
+ ACTIVATION_FEE_ALLOWANCE_USDC_WEI = 8
113
+ MAX_NAV_JUMP_BPS = 9
114
+ MAX_MARK_ORACLE_DEVIATION_BPS = 10
115
+ NAV_JUMP_FLOOR_USD6 = 11
116
+
117
+
118
+ #: Config keys the fuses ignore (kept for their stable numbering).
119
+ RESERVED_HYPERCORE_CONFIG_KEYS = frozenset(
120
+ {HyperCoreConfigKey.WINDOW_ORDER_SECONDS, HyperCoreConfigKey.SETTLEMENT_MODE}
121
+ )
114
122
 
115
123
 
116
124
  def hip3_action_asset(dex: int, index_in_dex: int) -> HyperCoreAsset:
@@ -347,11 +355,13 @@ class HyperCoreSubstrates:
347
355
  (at most one when any of them is HIP-3), Destinations for ``sendAsset`` /
348
356
  ``spotSend`` (only the vault itself and, for the Core -> EVM route, the
349
357
  token's :func:`system_address` are accepted by the fuses), a SendCap per
350
- token (mandatory: a token without one cannot be sent), Builders, and the
351
- Config keys. ``WINDOW_ORDER_SECONDS`` and ``SETTLEMENT_MODE`` are required
352
- before any order or cancel, ``MAX_USD_CLASS_TRANSFER_USD6`` before a margin
353
- transfer; ``WINDOW_TRANSFER_SECONDS`` defaults to 2 s and
354
- ``SPOT_SEND_BRIDGE_ENABLED`` to disabled. :func:`ipor_fusion.decode_substrate`
358
+ token (mandatory: a token without one cannot be sent), Builders, a
359
+ PerpPositionCap per market whose open position is capped, and the Config
360
+ keys. ``MAX_USD_CLASS_TRANSFER_USD6`` is required before a margin transfer;
361
+ ``WINDOW_TRANSFER_SECONDS`` defaults to 2 s, ``SPOT_SEND_BRIDGE_ENABLED`` to
362
+ disabled, ``TRANSFER_TIMEOUT_SECONDS`` to 600 s (at least 60),
363
+ ``MAX_NAV_JUMP_BPS`` to 5000 and ``MAX_MARK_ORACLE_DEVIATION_BPS`` to 500;
364
+ the reserved keys are ignored. :func:`ipor_fusion.decode_substrate`
355
365
  inverts these.
356
366
  """
357
367
 
@@ -394,7 +404,9 @@ class HyperCoreSubstrates:
394
404
  @staticmethod
395
405
  def config(key: HyperCoreConfigKey, value: int) -> bytes:
396
406
  """One Config key; ``PERP_DEX_IDS`` is a bitmap (bit i enables perp
397
- dex i, bit 0 stays clear), ``SETTLEMENT_MODE`` a :class:`SettlementMode`."""
407
+ dex i, bit 0 stays clear). The reserved keys
408
+ (:data:`RESERVED_HYPERCORE_CONFIG_KEYS`) encode but the fuses ignore
409
+ them."""
398
410
  key = HyperCoreConfigKey(key)
399
411
  _validate_uint(value, 240, "value")
400
412
  return _word(5, (int(key) << 240) | value)
@@ -405,3 +417,14 @@ class HyperCoreSubstrates:
405
417
  _validate_uint(token_index, 64, "token_index")
406
418
  _validate_uint(max_wei, 128, "max_wei")
407
419
  return _word(6, (token_index << 128) | max_wei)
420
+
421
+ @staticmethod
422
+ def perp_position_cap(
423
+ asset: HyperCoreAsset, max_position_notional_usd6: int
424
+ ) -> bytes:
425
+ """Cap on the open position notional of action asset ``asset`` in USD
426
+ (6 decimals); the order fuse reverts
427
+ ``HyperCoreOrderFusePositionCapExceeded`` above it."""
428
+ _validate_uint(asset, 32, "asset")
429
+ _validate_uint(max_position_notional_usd6, 88, "max_position_notional_usd6")
430
+ return _word(7, (asset << 216) | (max_position_notional_usd6 << 128))
@@ -1,13 +1,12 @@
1
- """HyperCore events by topic: the fuses', the pending library's, the
2
- settlement fuse's and the settlement reporter's.
1
+ """HyperCore events by topic: the fuses' and the pending library's.
3
2
 
4
3
  Mirrors the ``event`` declarations in ``contracts/fuses/hypercore``. Every
5
4
  parameter is unindexed (the repository's event policy), so a log decodes from
6
5
  its ``data`` alone; the first parameter of a fuse event, ``version``, is the
7
6
  fuse's own address (``VERSION``). ``HyperCoreActionEnqueued`` is emitted by
8
7
  the vault (the fuses run as delegatecalls) once per enqueued action and
9
- ``HyperCoreActionSettled`` only from a settlement fuse transaction; TIMING
10
- settlements emit nothing.
8
+ ``HyperCoreActionSettled`` by either HyperCore pre-hook when it clears a settled
9
+ action.
11
10
 
12
11
  Status: preview, not production. The contracts behind it are under active development, the mainnet deployments are a proof of concept and IPOR Labs canaries, and interfaces may change between minor versions; see ``ipor_fusion.about.PREVIEW_FEATURES``.
13
12
  """
@@ -134,42 +133,6 @@ HYPERCORE_EVENT_SPECS: tuple[HyperCoreEventSpec, ...] = (
134
133
  ),
135
134
  ),
136
135
  HyperCoreEventSpec("HyperCoreActionSettled", (("uint256", "nonce"),)),
137
- # HyperCoreSettlementFuse
138
- HyperCoreEventSpec(
139
- "HyperCoreReportedActionSettled",
140
- (
141
- ("uint256", "nonce"),
142
- ("uint24", "actionId"),
143
- ("bytes32", "payloadHash"),
144
- ("uint8", "outcome"),
145
- ("uint64", "resultL1Block"),
146
- ("bytes32", "evidenceHash"),
147
- ("bytes32", "reasonHash"),
148
- ),
149
- ),
150
- # HyperCoreSettlementReporter
151
- HyperCoreEventSpec(
152
- "ReportSubmitted",
153
- (("bytes32", "digest"), ("uint256", "nonce"), ("uint8", "outcome")),
154
- ),
155
- HyperCoreEventSpec("ObserverSetProposed", (("uint64", "executeAfter"),)),
156
- HyperCoreEventSpec(
157
- "ObserverSetChanged",
158
- (("address", "observer0"), ("address", "observer1"), ("address", "observer2")),
159
- ),
160
- HyperCoreEventSpec(
161
- "RecoveryProposed",
162
- (
163
- ("bytes32", "digest"),
164
- ("bytes32", "evidenceHash"),
165
- ("bytes32", "reasonHash"),
166
- ("uint64", "executeAfter"),
167
- ),
168
- ),
169
- HyperCoreEventSpec(
170
- "RecoveryExecuted",
171
- (("bytes32", "digest"), ("bytes32", "evidenceHash"), ("bytes32", "reasonHash")),
172
- ),
173
136
  )
174
137
 
175
138
  # Event parameters by their Solidity names; ``version`` is the emitting fuse.
@@ -250,45 +213,6 @@ class HyperCoreActionSettledArgs(TypedDict):
250
213
  nonce: int
251
214
 
252
215
 
253
- class HyperCoreReportedActionSettledArgs(TypedDict):
254
- nonce: int
255
- actionId: HyperCoreActionId
256
- payloadHash: PayloadHash
257
- outcome: int
258
- resultL1Block: int
259
- evidenceHash: bytes
260
- reasonHash: bytes
261
-
262
-
263
- class HyperCoreReportSubmittedArgs(TypedDict):
264
- digest: bytes
265
- nonce: int
266
- outcome: int
267
-
268
-
269
- class HyperCoreObserverSetProposedArgs(TypedDict):
270
- executeAfter: Timestamp
271
-
272
-
273
- class HyperCoreObserverSetChangedArgs(TypedDict):
274
- observer0: ChecksumAddress
275
- observer1: ChecksumAddress
276
- observer2: ChecksumAddress
277
-
278
-
279
- class HyperCoreRecoveryProposedArgs(TypedDict):
280
- digest: bytes
281
- evidenceHash: bytes
282
- reasonHash: bytes
283
- executeAfter: Timestamp
284
-
285
-
286
- class HyperCoreRecoveryExecutedArgs(TypedDict):
287
- digest: bytes
288
- evidenceHash: bytes
289
- reasonHash: bytes
290
-
291
-
292
216
  #: The parameters of one HyperCore event.
293
217
  HyperCoreEventArgs: TypeAlias = (
294
218
  HyperCoreDepositFuseEnterArgs
@@ -301,12 +225,6 @@ HyperCoreEventArgs: TypeAlias = (
301
225
  | HyperCoreBuilderFeeFuseEnterArgs
302
226
  | HyperCoreActionEnqueuedArgs
303
227
  | HyperCoreActionSettledArgs
304
- | HyperCoreReportedActionSettledArgs
305
- | HyperCoreReportSubmittedArgs
306
- | HyperCoreObserverSetProposedArgs
307
- | HyperCoreObserverSetChangedArgs
308
- | HyperCoreRecoveryProposedArgs
309
- | HyperCoreRecoveryExecutedArgs
310
228
  )
311
229
 
312
230
  #: topic0 -> spec, for every HyperCore event.
@@ -403,42 +321,6 @@ class HyperCoreActionSettledEvent(_HyperCoreEventBase):
403
321
  args: HyperCoreActionSettledArgs
404
322
 
405
323
 
406
- @dataclass(frozen=True, slots=True, kw_only=True)
407
- class HyperCoreReportedActionSettledEvent(_HyperCoreEventBase):
408
- name: Literal["HyperCoreReportedActionSettled"] = "HyperCoreReportedActionSettled"
409
- args: HyperCoreReportedActionSettledArgs
410
-
411
-
412
- @dataclass(frozen=True, slots=True, kw_only=True)
413
- class HyperCoreReportSubmittedEvent(_HyperCoreEventBase):
414
- name: Literal["ReportSubmitted"] = "ReportSubmitted"
415
- args: HyperCoreReportSubmittedArgs
416
-
417
-
418
- @dataclass(frozen=True, slots=True, kw_only=True)
419
- class HyperCoreObserverSetProposedEvent(_HyperCoreEventBase):
420
- name: Literal["ObserverSetProposed"] = "ObserverSetProposed"
421
- args: HyperCoreObserverSetProposedArgs
422
-
423
-
424
- @dataclass(frozen=True, slots=True, kw_only=True)
425
- class HyperCoreObserverSetChangedEvent(_HyperCoreEventBase):
426
- name: Literal["ObserverSetChanged"] = "ObserverSetChanged"
427
- args: HyperCoreObserverSetChangedArgs
428
-
429
-
430
- @dataclass(frozen=True, slots=True, kw_only=True)
431
- class HyperCoreRecoveryProposedEvent(_HyperCoreEventBase):
432
- name: Literal["RecoveryProposed"] = "RecoveryProposed"
433
- args: HyperCoreRecoveryProposedArgs
434
-
435
-
436
- @dataclass(frozen=True, slots=True, kw_only=True)
437
- class HyperCoreRecoveryExecutedEvent(_HyperCoreEventBase):
438
- name: Literal["RecoveryExecuted"] = "RecoveryExecuted"
439
- args: HyperCoreRecoveryExecutedArgs
440
-
441
-
442
324
  #: One decoded HyperCore event; ``event.name == "..."`` narrows it, and its
443
325
  #: ``args``, to that event's class.
444
326
  HyperCoreEvent: TypeAlias = (
@@ -452,12 +334,6 @@ HyperCoreEvent: TypeAlias = (
452
334
  | HyperCoreBuilderFeeFuseEnterEvent
453
335
  | HyperCoreActionEnqueuedEvent
454
336
  | HyperCoreActionSettledEvent
455
- | HyperCoreReportedActionSettledEvent
456
- | HyperCoreReportSubmittedEvent
457
- | HyperCoreObserverSetProposedEvent
458
- | HyperCoreObserverSetChangedEvent
459
- | HyperCoreRecoveryProposedEvent
460
- | HyperCoreRecoveryExecutedEvent
461
337
  )
462
338
 
463
339
  #: Event name -> its event class (``args`` annotation: its TypedDict).
@@ -472,12 +348,6 @@ HYPERCORE_EVENT_CLASSES: dict[str, type[HyperCoreEvent]] = {
472
348
  "HyperCoreBuilderFeeFuseEnter": HyperCoreBuilderFeeFuseEnterEvent,
473
349
  "HyperCoreActionEnqueued": HyperCoreActionEnqueuedEvent,
474
350
  "HyperCoreActionSettled": HyperCoreActionSettledEvent,
475
- "HyperCoreReportedActionSettled": HyperCoreReportedActionSettledEvent,
476
- "ReportSubmitted": HyperCoreReportSubmittedEvent,
477
- "ObserverSetProposed": HyperCoreObserverSetProposedEvent,
478
- "ObserverSetChanged": HyperCoreObserverSetChangedEvent,
479
- "RecoveryProposed": HyperCoreRecoveryProposedEvent,
480
- "RecoveryExecuted": HyperCoreRecoveryExecutedEvent,
481
351
  }
482
352
 
483
353
 
@@ -6,6 +6,7 @@ minor release, which is why they live here rather than in `ipor_fusion`.
6
6
  """
7
7
 
8
8
  from ipor_fusion.fuses.hypercore import (
9
+ RESERVED_HYPERCORE_CONFIG_KEYS,
9
10
  SPOT_DEX,
10
11
  USDC_SYSTEM_ADDRESS,
11
12
  USDC_TOKEN_INDEX,
@@ -17,7 +18,6 @@ from ipor_fusion.fuses.hypercore import (
17
18
  HyperCoreOrderFuse,
18
19
  HyperCoreSendFuse,
19
20
  HyperCoreSubstrates,
20
- SettlementMode,
21
21
  TimeInForce,
22
22
  hip3_action_asset,
23
23
  is_hip3_asset,
@@ -47,20 +47,8 @@ from ipor_fusion.fuses.hypercore_event_decoding import (
47
47
  HyperCoreEventSpec,
48
48
  HyperCoreMarginFuseEnterArgs,
49
49
  HyperCoreMarginFuseEnterEvent,
50
- HyperCoreObserverSetChangedArgs,
51
- HyperCoreObserverSetChangedEvent,
52
- HyperCoreObserverSetProposedArgs,
53
- HyperCoreObserverSetProposedEvent,
54
50
  HyperCoreOrderFuseEnterArgs,
55
51
  HyperCoreOrderFuseEnterEvent,
56
- HyperCoreRecoveryExecutedArgs,
57
- HyperCoreRecoveryExecutedEvent,
58
- HyperCoreRecoveryProposedArgs,
59
- HyperCoreRecoveryProposedEvent,
60
- HyperCoreReportedActionSettledArgs,
61
- HyperCoreReportedActionSettledEvent,
62
- HyperCoreReportSubmittedArgs,
63
- HyperCoreReportSubmittedEvent,
64
52
  HyperCoreSendFuseSendAssetArgs,
65
53
  HyperCoreSendFuseSendAssetEvent,
66
54
  HyperCoreSendFuseSpotSendArgs,
@@ -75,6 +63,7 @@ from ipor_fusion.readers.hypercore import (
75
63
  HYPERCORE_PENDING_READERS,
76
64
  HyperCoreAccountMarginSummary,
77
65
  HyperCoreActionClass,
66
+ HyperCoreEffectKind,
78
67
  HyperCoreNav,
79
68
  HyperCorePendingReader,
80
69
  HyperCorePendingState,
@@ -83,7 +72,6 @@ from ipor_fusion.readers.hypercore import (
83
72
  HyperCorePerpMarket,
84
73
  HyperCorePosition,
85
74
  HyperCoreReader,
86
- HyperCoreReportedResult,
87
75
  HyperCoreSpotBalance,
88
76
  HyperCoreSpotLeg,
89
77
  HyperCoreTokenInfo,
@@ -154,10 +142,6 @@ __all__ = [
154
142
  "HyperCoreMarginFuseEnterArgs",
155
143
  "HyperCoreMarginFuseEnterEvent",
156
144
  "HyperCoreNav",
157
- "HyperCoreObserverSetChangedArgs",
158
- "HyperCoreObserverSetChangedEvent",
159
- "HyperCoreObserverSetProposedArgs",
160
- "HyperCoreObserverSetProposedEvent",
161
145
  "HyperCoreOrderFuse",
162
146
  "HyperCoreOrderFuseEnterArgs",
163
147
  "HyperCoreOrderFuseEnterEvent",
@@ -169,15 +153,7 @@ __all__ = [
169
153
  "HyperCorePerpMarket",
170
154
  "HyperCorePosition",
171
155
  "HyperCoreReader",
172
- "HyperCoreRecoveryExecutedArgs",
173
- "HyperCoreRecoveryExecutedEvent",
174
- "HyperCoreRecoveryProposedArgs",
175
- "HyperCoreRecoveryProposedEvent",
176
- "HyperCoreReportSubmittedArgs",
177
- "HyperCoreReportSubmittedEvent",
178
- "HyperCoreReportedActionSettledArgs",
179
- "HyperCoreReportedActionSettledEvent",
180
- "HyperCoreReportedResult",
156
+ "HyperCoreEffectKind",
181
157
  "HyperCoreSendFuse",
182
158
  "HyperCoreSendFuseSendAssetArgs",
183
159
  "HyperCoreSendFuseSendAssetEvent",
@@ -192,7 +168,7 @@ __all__ = [
192
168
  "HyperCoreTransferSnapshot",
193
169
  "HyperCoreTransferStatus",
194
170
  "HyperCoreVaultState",
195
- "SettlementMode",
171
+ "RESERVED_HYPERCORE_CONFIG_KEYS",
196
172
  "TimeInForce",
197
173
  "compare_hypercore_transfer",
198
174
  "convert_to_wad_int",
@@ -972,14 +972,12 @@ class HyperCorePerpMarketEntry(_Base):
972
972
 
973
973
  class HyperCorePendingEntry(_Base):
974
974
  """HyperCorePendingReader.pendingState(): `pending` and `settled` are the
975
- authoritative predicates; the raw fields stay after a TIMING settlement."""
975
+ authoritative predicates; the raw fields stay after a settlement until the
976
+ next enqueue."""
976
977
 
977
978
  pending: bool
978
979
  settled: bool
979
- refreshing: bool
980
980
  action_class: Literal["NONE", "TRANSFER", "ORDER"]
981
- settlement_mode: Literal["TIMING", "REPORTED"] | None
982
- reported_result: Literal["NONE", "EXECUTED", "REJECTED"]
983
981
  action_id: int
984
982
  action_nonce: int
985
983
  pending_until: int
@@ -992,6 +990,20 @@ class HyperCorePendingEntry(_Base):
992
990
  )
993
991
  current_timestamp: int
994
992
  l1_block_available: bool
993
+ effect_kind: Literal["NONE", "CORE_SPOT", "EVM_BALANCE"] = Field(
994
+ description="The balance a transfer waits for before it settles."
995
+ )
996
+ effect_token_index: int = Field(description="Core token of a CORE_SPOT effect.")
997
+ effect_evm_asset: str = Field(description="ERC-20 of an EVM_BALANCE effect.")
998
+ expected_balance: int = Field(
999
+ description="Balance (Core wei or token units) that settles the transfer."
1000
+ )
1001
+ timeout_at: int = Field(
1002
+ description="Unix time after which the transfer settles without the effect."
1003
+ )
1004
+ last_order_l1_block: int = Field(
1005
+ description="Core L1 block of the last order; another waits for the next."
1006
+ )
995
1007
 
996
1008
 
997
1009
  class HyperCoreSection(_Base):