@cfxlabsinc/b2b-services
    Preparing search index...

    Variable ESCROW_TRANSFER_STATUSESConst

    ESCROW_TRANSFER_STATUSES: readonly [
        "PENDING",
        "CREATED",
        "RECIPIENT_SET",
        "CLAIMED",
        "CANCELLED",
        "REJECTED",
        "EXPIRED",
        "FAILED",
    ] = ...

    Lifecycle states for an escrow transfer. Conventions match sibling tables (withdrawal, deposit, swap, redemption): UPPERCASE_SNAKE_CASE, past-tense terminal states, single PENDING for any in-flight transition.

    • PENDING — DB row created, on-chain create_escrow not yet confirmed
    • CREATED — on-chain escrow exists, recipient wallet not yet attached
    • RECIPIENT_SETupdate_escrow succeeded, recipient wallet attached
    • CLAIMED — funds released to recipient (terminal)
    • CANCELLED — sender-initiated recall (terminal). Spelling matches sibling enums (deposit, ledger_account_transfer both use the en-GB double-L variant).
    • REJECTED — recipient- or authority-initiated rejection (terminal)
    • EXPIRED — auto-expired after 10 days (terminal)
    • FAILED — non-recoverable error during any transition (terminal)

    The cross-cluster backfill collapses every legacy *ing intermediate to PENDING; the original legacy value is preserved in the row's history jsonb so nothing is lost.