Skip to main content

Interaction

The interaction module enables CoW Protocol settlements to invoke arbitrary smart contracts, supporting capabilities such as EIP-2612 permit calls for gasless approvals and AMM trades (Uniswap, Balancer, Curve, etc.).

Types

Interaction

Represents a complete smart contract call with three components:

InteractionLike

A flexible partial type requiring only the target address:

Functions

normalizeInteraction

Processes a single interaction, applying default values for optional fields.

normalizeInteractions

Handles arrays of interactions.
Both functions ensure complete, ABI-compatible interaction objects with defaults of 0 for value and "0x" for callData.

Execution Stages

Common Use Cases

Best Practices

  • Validate target addresses before constructing interactions
  • Use Ethers.js for safe calldata encoding
  • Exercise caution with Ether transfers (non-zero value)
  • Test extensively on testnets prior to mainnet use
  • Select appropriate stages based on token balance availability
Last modified on March 4, 2026