Description
Currently join_campaign only supports TinyAMM pools directly (adapter_id=0). To support campaigns targeting pools on Aqua, Comet, Phoenix, and SoroSwap, we need to integrate the Hoops Finance adapter system.
What's needed
- Deploy Hoops Router to testnet/mainnet
- Deploy protocol adapters (SoroSwap, Aqua, Phoenix, Comet) from
/srv/repos/hoopsws/workspace/contracts/hoops-contracts/adapters/
- Register adapters with the router
- Update Campaign Manager's
swap_and_deposit() to call Hoops adapters when adapter_id > 0
- Update frontend pool selector to show pools from multiple DEXes
Current state
adapter_id == 0 → direct TinyAMM pool (working, tested on testnet)
adapter_id > 0 → returns AdapterCallFailed (not implemented)
- Hoops adapter interface defined at
hoops-adapter-interface crate (SDK 25.1.0)
- All 4 adapters exist and implement
AdapterTrait
Architecture
Campaign Manager
├── adapter_id 0 → TinyAMM direct (swap_received + deposit)
├── adapter_id 1 → Hoops Router → Aqua Adapter
├── adapter_id 2 → Hoops Router → Comet Adapter
├── adapter_id 3 → Hoops Router → Phoenix Adapter
└── adapter_id 4 → Hoops Router → SoroSwap Adapter
SDK version note
Hoops contracts use soroban-sdk 25.1.0, FlashPool uses 22.0.8. Cross-contract calls work across versions via WASM ABI.
Description
Currently
join_campaignonly supports TinyAMM pools directly (adapter_id=0). To support campaigns targeting pools on Aqua, Comet, Phoenix, and SoroSwap, we need to integrate the Hoops Finance adapter system.What's needed
/srv/repos/hoopsws/workspace/contracts/hoops-contracts/adapters/swap_and_deposit()to call Hoops adapters whenadapter_id > 0Current state
adapter_id == 0→ direct TinyAMM pool (working, tested on testnet)adapter_id > 0→ returnsAdapterCallFailed(not implemented)hoops-adapter-interfacecrate (SDK 25.1.0)AdapterTraitArchitecture
SDK version note
Hoops contracts use
soroban-sdk 25.1.0, FlashPool uses22.0.8. Cross-contract calls work across versions via WASM ABI.