Default Output
The default output for settlement schemes isMandateOutput
:
Single Chain Inputs
Single Chain Input Settlers usesStandardOrder
:
finalise
: To be called by the solver, the caller can designate where to send assets and whether to make an external call. Note that the Escrow & Compact interfaces are different to optimise for gas.finaliseWithSignature
: Can be called by anyone with anAllowOpen
signature from the solver, containing the destination and call details.
Compact Intent Registration
Intents are transferred asStandardOrder
, within the Compact they are signed as a BatchClaim
with the following structure:
BatchClaim
s using The Compact’s domain separator.
Alternatively, intents can be registered on-chain. There are two ways to do this: either the sponsor (user) registers it, or someone pays for the entire claim and registers it on their behalf.
Escrow Compact Registration
Intents are transferred asStandardOrder
but can be registered in several ways:
-
Registered by their owner through ERC-7683
function open(bytes)
. This emits a ERC-7683event Open(bytes32 indexed orderId, bytes order)
and also sets itsfunction orderStatus(bytes)
to 1. -
Registered through ERC-3009 with the orderId as the nonce.. For each input a signature has to be provided and then
0x01, abi.encode(bytes[])
. -
Registered through Permit2 with the signature provided as
0x00, bytes
from the EIP-712 signed objectPermitBatchWitnessTransferFrom
:
Integration Examples
- For a smart contract example of registering intents on behalf of someone else, see
RegisterIntentLib.sol
. - For a UI example of signing the Batch Compact, refer to the lintent.org demo.
- For a UI example of depositing and registering the intent, see the lintent.org demo.