PolicyBuilder
ThePolicyBuilder provides a fluent (chainable) API for constructing policies. It validates your configuration at build time and produces a well-formed Policy object.
Basic Usage
Constructor
Tier 1 Methods (Stateless On-Chain)
.allowTargets(addresses)
Whitelist contract addresses. Only transactions to these addresses will be allowed.
Returns:
PolicyBuilder (for chaining)
.denyTargets(addresses)
Blacklist contract addresses. Transactions to these addresses will be blocked.
Returns:
PolicyBuilder (for chaining)
.allowSelectors(selectors)
Whitelist function selectors. Only calls to these functions will be allowed.
Returns:
PolicyBuilder (for chaining)
.denySelectors(selectors)
Blacklist function selectors.
Returns:
PolicyBuilder (for chaining)
.maxValue(wei)
Set a maximum ETH value per transaction.
Returns:
PolicyBuilder (for chaining)
Tier 2 Methods (Stateful On-Chain)
.spendLimit(token, amount, windowSeconds)
Set a spending limit for a specific ERC-20 token within a rolling time window.
Returns:
PolicyBuilder (for chaining)
.cooldown(seconds)
Enforce a minimum time between transactions.
Returns:
PolicyBuilder (for chaining)
Tier 3 Methods (Off-Chain)
.maxSlippageBps(bps)
Set maximum acceptable slippage for swap transactions.
Returns:
PolicyBuilder (for chaining)
.requireSimulation(enabled)
Require that the transaction succeeds when simulated.
Returns:
PolicyBuilder (for chaining)
.customRule(config)
Add a custom off-chain rule with IPFS-hosted logic.
Returns:
PolicyBuilder (for chaining)
Configuration Methods
.setFailMode(mode)
Set the fail mode for off-chain rule evaluation.
Returns:
PolicyBuilder (for chaining)
Build
.build()
Validate and build the policy.
Policy
Throws: ValidationError if the policy configuration is invalid.
Validation checks include:
- At least one rule is defined
- Rule parameters are within valid ranges
- Addresses are valid checksummed hex
- Selectors are exactly 4 bytes
- Spend limit amounts are positive
- Cooldown and window values are positive integers

