Ownable2Step.
Users control their funds trustlessly.createAdapter() · createVault() · initializeVault()
Phase 1 — vault.deposit(FIXED) · vault.deposit(VARIABLE)
Phase 2 — vault starts automatically once both sides reach capacity
Phase 3 — vault.claim(); no withdrawals until maturity
Phase 4 — vault.withdraw(...) after settleEarnings()
Once both sides reach capacity, the vault starts.