Market Adapters
contracts/adapters/IMarketAdapter.sol — interfacecontracts/adapters/PolymarketCtfAdapter.solcontracts/adapters/PolymarketNegRiskMergeAdapter.solcontracts/adapters/OpinionCtfExecutionEngineAdapter.sol IMarketAdapter Interface
All adapters implement the IMarketAdapter interface. This standardizes how Varla interacts with different prediction market token systems.
interface IMarketAdapter {
function convert(
uint256 positionId,
uint256 amount,
address recipient
) external returns (uint256 outputAmount);
function getPositionToken() external view returns (address);
function getCollateralToken() external view returns (address);
} The convert() function is the key operation — it converts prediction market position tokens back into the underlying collateral token (e.g. merging YES+NO → USDC).
Adapters
PolymarketCtfAdapter
Integrates with Polymarket's Conditional Token Framework (CTF). Handles standard Polymarket positions where ERC1155 outcome tokens can be redeemed after market resolution.
| Detail | Value |
|---|---|
| Position token | ERC1155 (Polymarket CTF) |
| Collateral token | USDC |
| Convert method | Redeems resolved positions via CTF |
PolymarketNegRiskMergeAdapter
Handles Polymarket's NegRisk positions — markets with a binary YES/NO structure where complementary tokens can be merged back into the underlying collateral without waiting for resolution.
| Detail | Value |
|---|---|
| Position token | ERC1155 (NegRisk wrapper) |
| Collateral token | USDC |
| Convert method | Merges complementary positions via NegRisk adapter |
| Key dependency | INegRiskAdapter interface |
This is the primary path used by VarlaMergeLiquidator — it allows liquidators to merge YES+NO tokens without needing market resolution.
OpinionCtfExecutionEngineAdapter
Integrates with Opinion's CTF Execution Engine. Handles Opinion market positions which use a similar conditional token framework but with a different execution layer.
| Detail | Value |
|---|---|
| Position token | ERC1155 (Opinion CTF) |
| Collateral token | USDC |
| Convert method | Redeems/merges via Opinion's execution engine |
Adding New Adapters
To integrate a new prediction market platform, implement the IMarketAdapter interface:
contract MyMarketAdapter is IMarketAdapter {
function convert(
uint256 positionId,
uint256 amount,
address recipient
) external override returns (uint256 outputAmount) {
// 1. Transfer position tokens from caller
// 2. Convert/redeem via platform
// 3. Send output tokens to recipient
// 4. Return amount of collateral received
}
function getPositionToken() external view override returns (address) { ... }
function getCollateralToken() external view override returns (address) { ... }
} - Three production adapters: Polymarket CTF, Polymarket NegRisk, and Opinion CTF
- All implement IMarketAdapter — standardized convert(), getPositionToken(), getCollateralToken()
- NegRisk merge adapter is critical for liquidations (merge without resolution)
- New prediction markets can be added by implementing the IMarketAdapter interface