Skip to main content
This page is the authoritative reference for every deployed object in the IFÁ Labs Swap Contract on Sui Testnet. Unlike the oracle, which has just three objects, the swap contract has one object per asset — a vault and a protocol fee vault for each supported token, plus the shared Pool and several capability objects.

Core Objects

AdminCap, HLP Treasury Cap, and HLP Metadata Cap are owned objects held by the IFÁ Labs team — not objects you pass into deposit, withdraw, swap, or sweep calls. They’re listed here for completeness and transparency, not because integrators need them. The Pool ID is the object you’ll actually pass into every periphery function.

Pool Configuration


Asset Vaults

Each supported asset has its own AssetVault<T> and ProtocolFeeVault<T> — both required as arguments whenever you deposit, withdraw, or swap that asset.

SUI

USDSUI

CNGN

This Asset Index matches the CNGN/USD asset ID used on the oracle directly — confirming the swap contract reads the exact same IfaPriceFeed entries documented on Supported Assets.

ZARP

WAL

WAL’s coin type is registered in the deployment config but no AssetVault<WAL> or ProtocolFeeVault<WAL> has been created on-chain yet. Attempting to deposit, withdraw, or swap WAL will fail — there is no vault object to pass. Do not build against WAL until this page is updated to show real vault IDs.

TypeScript Constants

Copy-paste ready object IDs and coin types for the live Sui Testnet deployment:

Using These IDs in a Transaction

A complete swap example — SUI for CNGN — using the real testnet IDs above:
Notice the swap contract requires both its own Pool/Vault objects and the oracle’s Feed Object ID in the same call. This is the swap contract directly consuming the oracle — exactly as described in the Sui Swap Contract Overview.

Verifying These Objects On-Chain

1

Open the package on Suiscan

Navigate to the Package ID on Suiscan. Confirm the package name is ifalabs and the modules listed include hetero_swap_core, hetero_swap_periphery, and hlp.
2

Verify the Pool object

Navigate to the Pool ID on Suiscan. Confirm the object type is ifalabs::hetero_swap_core::Pool and it is a shared object.
3

Verify an asset vault

Pick any asset vault ID from the tables above and confirm its object type matches ifalabs::hetero_swap_core::AssetVault<T>, where T is the expected coin type.
4

Check recent transactions

On the Pool object page, review recent transactions. You should see deposit_liquidity, swap_exact_input, or withdraw_liquidity calls if the pool has seen any testnet activity.

Reporting an Address Discrepancy

If you encounter an object ID claiming to be part of the IFÁ Labs Swap Contract that is not listed on this page, do not use it and report it immediately:

Next Steps

Swap Function Reference

Every public function — deposit, withdraw, swap, sweep, and quote.

Sui Swap Contract Overview

Architecture, core concepts, and what the pool does.

Contract Addresses

The oracle’s object IDs — required alongside the Pool ID for every swap call.

Testnet Faucet

Claim testnet SUI and WAL to try a deposit or swap yourself.