PolicyBuilder
Fluent API for drafting policies from constraints.
Functions
createRaw
Creates a selectorless draft from a comma-separated type list.
function createRaw(string memory typesCsv) internal pure returns (PolicyDraft memory draft);Parameters
| Name | Type | Description |
|---|---|---|
typesCsv | string | The comma-separated ABI types (e.g. "uint256,address"). |
Returns
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The initialized draft. |
create
Creates a draft from a function signature.
function create(string memory signature) internal pure returns (PolicyDraft memory draft);Parameters
| Name | Type | Description |
|---|---|---|
signature | string | The function signature. |
Returns
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The initialized draft. |
add
Adds a constraint to the active group with validation.
function add(PolicyDraft memory draft, Constraint memory constraint) internal pure returns (PolicyDraft memory);Parameters
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The draft state. |
constraint | Constraint | The constraint to add. |
Returns
| Name | Type | Description |
|---|---|---|
<none> | PolicyDraft | The updated draft state with the constraint appended. |
or
Starts a new constraint group (OR semantics between groups).
function or(PolicyDraft memory draft) internal pure returns (PolicyDraft memory);Parameters
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The draft state. |
Returns
| Name | Type | Description |
|---|---|---|
<none> | PolicyDraft | The updated draft state with a new empty group. |
build
Builds the final policy blob with strict validation.
Validates the policy and reverts on any issue.
function build(PolicyDraft memory draft) internal pure returns (bytes memory);Parameters
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The draft state to build from. |
Returns
| Name | Type | Description |
|---|---|---|
<none> | bytes | The encoded policy blob. |
buildUnsafe
Builds the final policy blob without validation.
Skips validation. The resulting policy may be invalid.
function buildUnsafe(PolicyDraft memory draft) internal pure returns (bytes memory);Parameters
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The draft state to build from. |
Returns
| Name | Type | Description |
|---|---|---|
<none> | bytes | The encoded policy blob. |
validate
Validates the policy without building.
Use for inspection, debugging, or custom error handling.
function validate(PolicyDraft memory draft) internal pure returns (Issue[] memory);Parameters
| Name | Type | Description |
|---|---|---|
draft | PolicyDraft | The draft state to validate. |
Returns
| Name | Type | Description |
|---|---|---|
<none> | Issue[] | All validation issues found. |
Errors
NoConstraintOperators
Thrown when the constraint has no operators.
error NoConstraintOperators();DuplicatePathInGroup
Thrown when the same (scope,path) appears twice within a group.
error DuplicatePathInGroup(uint8 scope, bytes path);Parameters
| Name | Type | Description |
|---|---|---|
scope | uint8 | The constraint scope. |
path | bytes | The encoded be16 path. |
InvalidScope
Thrown when an unsupported scope value is provided.
error InvalidScope(uint8 scope);Parameters
| Name | Type | Description |
|---|---|---|
scope | uint8 | The invalid scope value. |
InvalidContextPath
Thrown when a context-scope path does not have exactly one step.
error InvalidContextPath(uint256 depth);Parameters
| Name | Type | Description |
|---|---|---|
depth | uint256 | The path depth. |
UnknownContextProperty
Thrown when a context-scope path references an undefined context property.
error UnknownContextProperty(uint16 contextPropertyId);Parameters
| Name | Type | Description |
|---|---|---|
contextPropertyId | uint16 | The referenced property ID. |
QuantifierOnNonArray
Thrown when a quantifier is used on a non-array node.
error QuantifierOnNonArray(bytes path, uint256 stepIndex);Parameters
| Name | Type | Description |
|---|---|---|
path | bytes | The encoded be16 path. |
stepIndex | uint256 | The step index of the invalid quantifier. |
NestedQuantifier
Thrown when a path contains more than one quantifier step.
error NestedQuantifier(bytes path, uint256 stepIndex);Parameters
| Name | Type | Description |
|---|---|---|
path | bytes | The encoded be16 path. |
stepIndex | uint256 | The step index of the second quantifier. |
EmptyGroup
Thrown when a group is empty.
error EmptyGroup(uint256 groupIndex);Parameters
| Name | Type | Description |
|---|---|---|
groupIndex | uint256 | The index of the empty group. |
struct PolicyDraft {
/// The canonical policy data.
PolicyData data;
}