Skip to main content

Contracts and ABIs

HyperAMM integrations should be built from the current contract address registry and published ABIs.

Address Sources

Use addresses in this order:

  1. Current HyperAMM address registry.
  2. Verified block explorer entries for the target chain.
  3. Factory registry reads for per-pool components.
  4. Documentation tables for human review.

The public Contract Addresses page is the address reference. Production systems should still verify addresses on-chain before writes.

Global Contracts

ContractPurposeIntegrator use
HyperAMMFactoryRegistry and pool component lookupDiscover pools and per-pool addresses
HyperAMMSwapRouterSwap entry pointPreview and execute exact-input swaps
HyperAMMLensRead helperPreview swaps, deposits, instant withdrawals, and queued withdrawals

Per-Pool Contracts

Every pool has its own component set.

ContractPurposeIntegrator use
HyperAMMLP ERC-20 and pool accountingLP balance, token metadata, pool state
SovereignPoolValantis spot execution pool-
HyperAMMExecutorAsync LP entry pointSubmit deposits and withdrawals
HyperAMMWithdrawerQueued withdrawal stateRead request state and claim queued withdrawals
HyperAMMEscrowPull-based refund escrowRead and claim pending HYPE/token refunds
HyperCoreManagerHyperCore account manager-
HyperCoreTraderHyperCore trading helper-
HyperAMMRebalancerPool rebalance component-
HyperAMMReconcilerHedge reconciliation component-
HyperAMMCompositionManagerPool composition component-
HyperAMMStakingManagerPer-pool sHYPE staking managerStake and unstake HYPE when the staking surface is enabled
sHYPEPer-pool staked HYPE receipt tokenRead staking balances and approve unstake requests
OraclePool price sourceRead oracle configuration when exposed
SwapFeeModuleDynamic fee logicRead fee configuration and previews when exposed

Factory Lookup

Use getPoolInfo(poolId) when you need the full component set.

pool-components.ts
const info = await publicClient.readContract({
address: factoryAddress,
abi: hyperAMMFactoryAbi,
functionName: "getPoolInfo",
args: [poolId],
});

const components = info.deployment;

Use getPoolAddress(poolId, field) when you need one component address.

single-component.ts
const executor = await publicClient.readContract({
address: factoryAddress,
abi: hyperAMMFactoryAbi,
functionName: "getPoolAddress",
args: [poolId, stringToBytes32("executor")],
});

Supported component fields include:

FieldReturns
hyperAMMLP token and pool accounting contract
poolValantis SovereignPool
oraclePool oracle
hyperCoreManagerCore account manager
hyperCoreTraderCore trading helper
withdrawerQueued withdrawal contract
rebalancerRebalancer
executorAsync LP executor
escrowRefund escrow
reconcilerHedge reconciliation component
compositionManagerPool composition manager
swapFeeModuleDynamic swap fee module
stakingManagerPer-pool sHYPE staking manager
sHYPEPer-pool staked HYPE receipt token

ABI Policy

Use ABIs from the current published ABI files or verified explorer entries for the deployment you are integrating. Pin ABI versions in your application and update them deliberately.

Required ABIs for most integrations:

FlowABIs
Pool discoveryHyperAMMFactory
SwapHyperAMMSwapRouter, HyperAMMLens, ERC-20
LP depositHyperAMMExecutor, HyperAMMLens, HyperAMM, ERC-20
LP withdrawHyperAMMExecutor, HyperAMMWithdrawer, HyperAMMLens, HyperAMMEscrow, ERC-20
Portfolio displayHyperAMMFactory, HyperAMM, HyperAMMWithdrawer
sHYPE stakingHyperAMMStakingManager, sHYPE, ERC-20

Integration Surface

Use these surfaces for integration:

  • deployed contract addresses
  • published ABIs
  • documented events
  • documented request lifecycles
  • audited and disclosed control surfaces
  • RPC simulations against the target chain

Next Steps