Skip to content

This page is the ABI reference for the V6 UserProxyFactoryV6 and UserProxyV6 deployment listed on the intent addresses page. This page is separate from the Intents ABI reference, whose selectors, contracts, and order types are not interchangeable with the User Proxy.

Chain Chain ID UserProxyFactoryV6 UserProxyV6 implementation
Base 8453 0xc1660e4BbC825f8367dA92b60dccc17E4E10bc26 0x6E4065a3E864Acf36BfaB95cEE31713b48F8dBd6
Arbitrum One 42161 0xc1660e4BbC825f8367dA92b60dccc17E4E10bc26 0x6E4065a3E864Acf36BfaB95cEE31713b48F8dBd6
BNB Smart Chain 56 0xc1660e4BbC825f8367dA92b60dccc17E4E10bc26 0x6E4065a3E864Acf36BfaB95cEE31713b48F8dBd6
Robinhood Chain 4663 0xc1660e4BbC825f8367dA92b60dccc17E4E10bc26 0x6E4065a3E864Acf36BfaB95cEE31713b48F8dBd6

For the separate swap paths, the canonical Permit2 address is:

0x000000000022D473030F116dDEE9F6B43aC78BA3
Item Value
NATIVE 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
ACTION_EXECUTE 0x01
AGENT_ORDER_TYPEHASH() getter 0x5b56c616 selector
EIP-712 name AgentSwap UserProxy
EIP-712 version 5

domainSeparator() returns the proxy domain separator. Use the proxy’s domain for AgentOrder.

Selector Signature
0x1cff614d predictProxy(address)
0x4c96a389 deploy(address)
0x5c60da1b implementation()
0xc1a9a508 proxyOf(address)
0xab221a76 settler()
Selector Signature
0x19ab453c init(address)
0x7ee8ff6e execute(address,address,address,uint256,address,uint256,bytes)
0x4cb75e2e executePermit2In(((address,uint256),uint256,uint256),bytes,address,address,address,uint256,bytes)
0xca1f43a9 grantAgent(address,uint64,uint32,uint8,address[],uint256[])
0x7da6ac0d revokeAgent(address)
0x950301fa setAgentCap(address,address,uint256)
0xda0f2deb executeAsAgent((address,uint64,address,address,uint256,address,uint256,uint256,uint256),bytes,address,bytes)
0xf514d6e5 policyOf(address)
0x27e2f125 agentTokenInfo(address,address)
0xd5669740 hashAgentOrder((address,uint64,address,address,uint256,address,uint256,uint256,uint256))
0x353eea55 isAgentNonceUsed(address,uint256)
0x5b56c616 AGENT_ORDER_TYPEHASH()
0xf698da25 domainSeparator()
0x84b0196e eip712Domain()
0x8da5cb5b owner()
0xa0cf0aea NATIVE()
0x6afdd850 PERMIT2()
0xf05b55ef ACTION_EXECUTE()
0xd8d75058 pullForIntent((O),bytes)
0x08c488c2 isIntentAuthorized((O),bytes)
0xc7df4069 hashIntentOrder((O))
0x2a7dacec invalidateOwnerNonces(uint256,uint256)
0x208a0d46 killOrders(bytes32[])
0x1914ddd6 isOwnerNonceUsed(uint256)
0x4626e43d isOrderKilled(bytes32)

The proxy also declares receive() external payable {}, which has no selector and so has no row above. It is what lets a router refund native ETH to the proxy mid-swap; sweepNative is how the owner retrieves any that stays. | 0x1be19560 | sweepToken(address) | | 0xab803a76 | sweepNative() | | 0x78c093cf | sweepNative(address) |

0xf05b55ef is the selector for the public ACTION_EXECUTE() getter. The typehash getter selector is a typed-data lookup, not an entry-point selector.

Event Fields
Initialized address indexed owner
ProxyDeployed address indexed user, address indexed proxy
Executed address indexed router, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut
ExecutedV2 address indexed router, address indexed spender, address indexed pull, bool usedPermit2, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut
AgentGranted address indexed agent, uint64 gen, uint64 expiry, uint32 epochLen, uint8 actionMask
AgentRevoked address indexed agent, uint64 gen
AgentCapSet address indexed agent, uint64 gen, address indexed tokenIn, uint256 cap
ExecutedAsAgent address indexed agent, address indexed router, address indexed relayer, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut
OwnerNoncesInvalidated uint256 indexed word, uint256 mask
OrderKilled bytes32 indexed id
PulledForOwnerIntent address indexed pulledTo, bytes32 indexed orderHash, address tokenIn, uint256 amountIn
PulledForAgentIntent address indexed agent, address indexed pulledTo, bytes32 indexed orderHash, address tokenIn, uint256 amountIn, uint256 debit
Error Signature
AlreadyInitialized AlreadyInitialized()
NotOwner NotOwner()
SlippageExceeded SlippageExceeded(uint256 received,uint256 minOut)
RouterCallFailed RouterCallFailed(bytes returnData)
InvalidSignature InvalidSignature()
NonceAlreadyUsed NonceAlreadyUsed()
SameToken SameToken()
UnexpectedEthValue UnexpectedEthValue(uint256 sent)
EthValueMismatch EthValueMismatch(uint256 sent,uint256 expected)
NativeNotSupportedInOrder NativeNotSupportedInOrder()
InsufficientOwnerDelivery InsufficientOwnerDelivery(uint256 delivered,uint256 required)
Permit2AmountOverflow Permit2AmountOverflow(uint256 amount)
InvalidAgent InvalidAgent()
InvalidToken InvalidToken()
InvalidExpiry InvalidExpiry()
InvalidEpochLen InvalidEpochLen()
LengthMismatch LengthMismatch()
PolicyInactive PolicyInactive()
ActionNotAllowed ActionNotAllowed()
TokenNotAllowed TokenNotAllowed()
AgentOrderExpired AgentOrderExpired()
CapExceeded CapExceeded(uint256 used,uint256 amount,uint256 cap)
MinOutZero MinOutZero()
Reentrancy Reentrancy()
AmountInZero AmountInZero()
SpenderNotAllowed SpenderNotAllowed()
OwnerNonceUsed OwnerNonceUsed(uint256 nonce)
DebitExceedsSignedAmount DebitExceedsSignedAmount(uint256 debit,uint256 signed)
EmptyNonceMask EmptyNonceMask()
EmptyOrderList EmptyOrderList()
RecipientNotOwner RecipientNotOwner()
AuthorizationExpired AuthorizationExpired(uint64 deadline)
AuthorizationExpiresBeforeOrderOpens AuthorizationExpiresBeforeOrderOpens(uint64 deadline,uint256 startTime)
PolicyExpiresBeforeOrderOpens PolicyExpiresBeforeOrderOpens(uint64 expiry,uint256 startTime)
AuthOrderMismatch AuthOrderMismatch()
ZeroAddress ZeroAddress() (factory)