Skip to main content

PolicyBuilder

The PolicyBuilder 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.
Returns: 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