@cdr-kit/react/Components/EscrowDeliveryConfirm
<EscrowDeliveryConfirm>
Buyer-side flow for ConditionalEscrowCondition: pay → confirm delivery → seller paid + buyer reads. Surfaces the timeout countdown after which the seller can claim unilaterally.
import { EscrowDeliveryConfirm } from "@cdr-kit/react"
Live preview
vault #8812Escrow
price0.01 $IP
timeout24h after pay
stateawaiting payment
confirm releases funds to seller AND grants buyer read access. No arbiter = no refund path.import { EscrowDeliveryConfirm } from "@cdr-kit/react";
<EscrowDeliveryConfirm uuid={8812} buyer={connectedAddress} />
// Render-prop for the dashboard:
<EscrowDeliveryConfirm uuid={8812} buyer={connectedAddress}>
{({ paidAt, delivered, timeoutInMs, confirmDelivery, pay }) => (
paidAt === 0n
? <button onClick={() => pay()}>Pay listing price</button>
: delivered
? <span>delivered ✓</span>
: <button onClick={() => confirmDelivery()}>Confirm delivery</button>
)}
</EscrowDeliveryConfirm>Props
| Prop | Type | Default | Description |
|---|---|---|---|
| uuidrequired | number | — | ConditionalEscrowCondition-gated vault uuid. |
| buyer | Hex | undefined | — | Address whose paidAt/delivered state to read. Usually the connected wallet. |
| children | (state) => ReactNode | — | Render-prop. Receives the full EscrowState including seller, price, timeoutSecs, arbiter, paidAt, delivered, timeoutInMs, plus pay() and confirmDelivery() actions. |
Intrinsic CDR limitation
Once a buyer pays + confirms + reads, they hold plaintext forever. The dispute path (arbiter refund) can revoke future access but cannot "un-read." Document this in your buyer UX.