🔀 Integrating as a Distributor? (Wallets, DEX Aggregators) → LINK
📈 Integrating as a Market Maker? (RFQ, Executor Contract) → LINK
📖 Need general reference? (Contract addresses, token support, flow overview) → LINK
executeByTypeWithCallback(reactorType, order, callbackData) (selector-stable) with the order inforeactorCallback and performs the Executor swap logic| Order Time | Person eligible to fill |
|---|---|
| User signs the order → decayStartTime | Exclusive filler only (or filler willing to pay the exclusivityOverrideBps penalty) |
| decayStartTime → decayEndTime (decay starts) | Anyone can fill |
| decayEndTime → deadline (decay stops) | Anyone can fill |
PCSX only supports Wrapped native token as input. When a user swaps from native tokens to any tokens, our frontend will wrap the native token, get quote on the Wrap native token and send the token to the PCSX contracts. Therefore, in order to maximise the gain, we suggest all Market Makers to support both native token and Wrap native token pairs.
One Router address per wallet family now fills every order type. PCSX is migrating from per-version reactor addresses (a separate address for each of ExclusiveDutch / V3Dutch / V4Dutch) to a single stable MultiReactor Router per family. The Router fills all current and future order types, and its address never changes across upgrades or when new types are added.
Because one address serves several order types, the address no longer tells you the order type — resolve the type by decoding the order (below), and every on-chain call selects the function for that type.