Skip to content

Architecture

Three contract types make up the Vault-K-NO system. Each has a distinct, non-overlapping role.

LiquidityVault

The single user-facing contract. All investor interactions happen here.

Responsibilities: - Holds all USDC (idle reserve + deployed capital tracked by adapters) - Manages the four-slot position registry - Contains all pricing logic: modeled NAV, market NAV, gap calculation - Applies the quadratic redemption curve to exits - Enforces the daily cap and pause condition - Maintains the FIFO withdrawal queue - Emits all protocol events

MarketAdapter

One instance per active prediction market. Deployed by the operator when entering a new position.

Responsibilities: - Handles all venue-specific logic: order submission, price reading, settlement claiming - Buys NO shares with USDC from the vault - Reports current position value to the vault - Claims settled funds and returns USDC to the vault

Key properties: - Up to four adapters active simultaneously (one per vault slot) - Stateless beyond the position it holds - Decommissioned when its market settles and capital is redeployed - Venue-specific implementation — each venue requires its own adapter

HouseBuffer

Shared USDC reserve backing one or more vaults.

Responsibilities: - Collects 0.5% liquidity fee from every vault redemption - Provides reserve top-ups when a vault's idle cash runs low - Can back multiple vaults simultaneously

Scope

The HouseBuffer does not calculate gap coverage and does not insure against market losses. It is a liquidity float, not an insurance fund.

Contract Interaction Map

Investor ──── deposit() ────────────────────────► LiquidityVault
Investor ──── requestWithdraw() ─────────────────► LiquidityVault
Keeper  ──── processWithdrawals() ───────────────► LiquidityVault
Operator ─── openPosition() ─────────────────────► LiquidityVault
                                                         │ buyNoShares()
                                                    MarketAdapter[0..3]
                                                         │ (prediction market venues)
Operator ─── closePosition() ────────────────────► LiquidityVault
                                                         │ claimSettlement()
                                                    MarketAdapter
LiquidityVault ─── fee ──────────────────────────► HouseBuffer
HouseBuffer    ─── topUpReserve() ───────────────► LiquidityVault