Pattern 1: Smart order router
The router treats C1 as one more venue in its routing graph. Discovery comes from thePoolCreated event, pair resolution from poolByPair, the quote from quoteBuyFromPool in the router’s normal quoting pass, and execution goes through the Market in the same transaction as the rest of the route.
The quoting property matters most here. Because quoteBuyFromPool is a plain non-reverting view with no caller requirement, adding C1 to a quoting pass cannot fail the pass. An unavailable pool, a paused market, an empty pool or a failed oracle read all return available: false. This is the reason integration risk on the quote path is structurally zero.
Pattern 2: Intent-based settlement
For UniswapX, 1inch Fusion, CoW Protocol and equivalents. The counterparty is the solver, filler or resolver, not the intent protocol itself.An intent fill sourcing inventory from a C1 pool
buyFromPool where the filler already holds the quote asset. buyFromPoolExactOut where it does not.
The funding callback. A filler frequently does not hold the pool’s quote asset at the moment of the call. It holds whatever the swapper handed over. It also cannot know the exact quote-asset cost until the oracle read happens inside the transaction. buyFromPoolExactOut resolves both through IFlowstateBuyFunder.fundBuy(quoteAsset, cost):
- The callback fires only when the caller is a contract and its balance or allowance is short of the computed cost.
- It receives the quote asset and the exact cost, computed inside the transaction after the oracle read.
- The caller must make that amount available to the Market before returning from the callback.
- A pre-funded caller never sees the callback and does not need to implement the interface.
quoteBuyFromPool as close to settlement as its architecture allows, and should have a fallback route for the reverting case, in the same way it would for any venue that can fail.
Attribution. Pass a resellerCode to attribute settled volume to the integration. Empty string if unused.
Approvals. Approve the Market, not the pool. Settlement is quote-asset ERC-20 only with msg.value == 0. There is no native-ETH path, so a filler holding native ETH must wrap first.

