Entities
Roles, milestones, trustline, and on-chain escrow entity shapes.
These are the on-chain / post-submit shapes. For list and detail UI, prefer the read model (EscrowSummary) in Reads & responses.
Roles
v2 roles use arrays for operational wallets. Single-release keeps an escrow-level receiver. Multi-release puts receiver on each milestone instead.
Single-release — Roles
type Roles = {
approvers: string[]; // G… wallets that approve milestones
serviceProviders: string[]; // who delivers work / updates status
platform: string; // platform fee address
releaseSigners: string[]; // who can release funds
disputeResolvers: string[]; // who can resolve disputes
receiver: string; // who receives the single payout
admin: string; // who can update / manage milestones
observers?: string[]; // optional watchers
};Multi-release — MultiReleaseRoles
Same as Roles, without receiver (each milestone has its own):
type MultiReleaseRoles = {
approvers: string[];
serviceProviders: string[];
platform: string;
releaseSigners: string[];
disputeResolvers: string[];
admin: string;
observers?: string[];
};Role filter — Role
Used when filtering lists (ListEscrowsParams.role):
Trustline
On deploy — DeployTrustline
On read / snapshot — Trustline
Milestones
Approvals — MilestoneApprovals
Single-release milestone — SingleReleaseMilestone
Multi-release milestone — MultiReleaseMilestone
Escrow-level dispute (single-release) — Dispute
Escrow entities
Escrow is either single or multi: