Skip to main content
Flex API
Flex API / facilitator

facilitator

Type Aliases

EscrowAccounting

EscrowAccounting = object
Defined in: facilitator/accounting.ts:26 Snapshot of an escrow’s vault balances, pending settlements, and available capacity.

Properties

availableByMint
availableByMint: Map<Address, bigint>
Defined in: facilitator/accounting.ts:33
canSubmit
canSubmit: boolean
Defined in: facilitator/accounting.ts:34
escrow
escrow: Address
Defined in: facilitator/accounting.ts:27
holds
holds: HoldEntry[]
Defined in: facilitator/accounting.ts:29
maxPending
maxPending: number
Defined in: facilitator/accounting.ts:32
pendingCount
pendingCount: bigint
Defined in: facilitator/accounting.ts:31
totalPendingByMint
totalPendingByMint: Map<Address, bigint>
Defined in: facilitator/accounting.ts:30
vaultBalances
vaultBalances: Map<Address, bigint>
Defined in: facilitator/accounting.ts:28

Hold

Hold = object
Defined in: facilitator/hold-manager.ts:6 An in-memory hold representing a payment authorization awaiting on-chain submission.

Properties

authorizationId
authorizationId: bigint
Defined in: facilitator/hold-manager.ts:11
escrow
escrow: Address
Defined in: facilitator/hold-manager.ts:7
expiresAtSlot
expiresAtSlot: bigint
Defined in: facilitator/hold-manager.ts:12
heldAt
heldAt: number
Defined in: facilitator/hold-manager.ts:22
maxAmount
maxAmount: bigint
Defined in: facilitator/hold-manager.ts:10
message
message: Uint8Array
Defined in: facilitator/hold-manager.ts:18
mint
mint: Address
Defined in: facilitator/hold-manager.ts:8
payer
payer: Address
Defined in: facilitator/hold-manager.ts:19
retryCount
retryCount: number
Defined in: facilitator/hold-manager.ts:24
sessionKeyAddress
sessionKeyAddress: Address
Defined in: facilitator/hold-manager.ts:13
sessionKeyPDA
sessionKeyPDA: Address
Defined in: facilitator/hold-manager.ts:14
settleAmount
settleAmount: bigint
Defined in: facilitator/hold-manager.ts:9
signatureBytes
signatureBytes: Uint8Array
Defined in: facilitator/hold-manager.ts:17
splits
splits: SplitInput[]
Defined in: facilitator/hold-manager.ts:16
status
status: "held" | "settled" | "submitting" | "submitted" | "finalizing"
Defined in: facilitator/hold-manager.ts:21
submittedAtSlot
submittedAtSlot: bigint | null
Defined in: facilitator/hold-manager.ts:23
validUntilSlot
validUntilSlot: bigint
Defined in: facilitator/hold-manager.ts:20
vault
vault: Address
Defined in: facilitator/hold-manager.ts:15

HoldEntry

HoldEntry = object
Defined in: facilitator/accounting.ts:14 A single on-chain pending settlement as seen by the accounting view.

Properties

amount
amount: bigint
Defined in: facilitator/accounting.ts:17
authorizationId
authorizationId: bigint
Defined in: facilitator/accounting.ts:15
maxAmount
maxAmount: bigint
Defined in: facilitator/accounting.ts:18
mint
mint: Address
Defined in: facilitator/accounting.ts:16
pendingAddress
pendingAddress: Address
Defined in: facilitator/accounting.ts:22
sessionKey
sessionKey: Address
Defined in: facilitator/accounting.ts:20
splits
splits: object[]
Defined in: facilitator/accounting.ts:21
bps
bps: number
recipient
recipient: Address
submittedAtSlot
submittedAtSlot: bigint
Defined in: facilitator/accounting.ts:19

HoldManager

HoldManager = ReturnType<typeof createHoldManager>
Defined in: facilitator/hold-manager.ts:243 The hold manager interface, inferred from createHoldManager.

HoldResult

HoldResult = { ok: true; } | { ok: false; reason: string; }
Defined in: facilitator/hold-manager.ts:34 Discriminated result from hold operations: success or failure with reason.

TryHoldParams

TryHoldParams = Omit<Hold, "status" | "heldAt" | "submittedAtSlot" | "retryCount">
Defined in: facilitator/hold-manager.ts:28 Parameters for creating a new hold (lifecycle fields are added internally).

Variables

MAX_PENDING_SETTLEMENTS

const MAX_PENDING_SETTLEMENTS: 16 = 16
Defined in: facilitator/accounting.ts:38 Maximum number of concurrent pending settlements an escrow supports.

Functions

createHoldManager()

createHoldManager(): object
Defined in: facilitator/hold-manager.ts:44 Creates an in-memory hold manager that tracks payment authorizations through their lifecycle: held -> settled -> submitting -> submitted -> finalizing. Enforces vault balance limits and pending settlement capacity per escrow.

Returns

object A HoldManager instance
drainFinalizable()
drainFinalizable: (currentSlot, getRefundTimeout) => Hold[]
Parameters
currentSlot
bigint
getRefundTimeout
(escrow) => bigint | null
Returns
Hold[]
drainSubmittable()
drainSubmittable: (currentSlot) => Hold[]
Parameters
currentSlot
bigint
Returns
Hold[]
getHeldAmount()
getHeldAmount: (escrow, mint) => bigint
Parameters
escrow
Address
mint
Address
Returns
bigint
getHolds()
getHolds: () => Hold[]
Returns
Hold[]
getUnsubmittedCount()
getUnsubmittedCount: (escrow) => number
Parameters
escrow
Address
Returns
number
markFailed()
markFailed: (escrow, authorizationId) => number
Parameters
escrow
Address
authorizationId
bigint
Returns
number
markFinalized()
markFinalized: (escrow, authorizationId) => boolean
Parameters
escrow
Address
authorizationId
bigint
Returns
boolean
markSubmitted()
markSubmitted: (escrow, authorizationId, currentSlot) => boolean
Parameters
escrow
Address
authorizationId
bigint
currentSlot
bigint
Returns
boolean
pendingCount()
pendingCount: () => number
Returns
number
releaseHold()
releaseHold: (escrow, authorizationId) => void
Parameters
escrow
Address
authorizationId
bigint
Returns
void
resetToSubmitted()
resetToSubmitted: (escrow, authorizationId) => void
Parameters
escrow
Address
authorizationId
bigint
Returns
void
sweepExpired()
sweepExpired: (currentSlot) => Hold[]
Parameters
currentSlot
bigint
Returns
Hold[]
tryHold()
tryHold: (params, vaultBalance, onChainCommitted, onChainPendingCount) => HoldResult
Parameters
params
TryHoldParams
vaultBalance
bigint
onChainCommitted
bigint
onChainPendingCount
bigint
Returns
HoldResult
updateSettleAmount()
updateSettleAmount: (escrow, authorizationId, settleAmount) => HoldResult
Parameters
escrow
Address
authorizationId
bigint
settleAmount
bigint
Returns
HoldResult

fetchEscrowAccounting()

fetchEscrowAccounting(rpc, escrowAddress, mints): Promise<EscrowAccounting>
Defined in: facilitator/accounting.ts:65 Fetches a full accounting snapshot for an escrow: vault balances, on-chain pending settlements, and the available capacity per mint.

Parameters

rpc
Rpc<SolanaRpcApi> Solana RPC client
escrowAddress
Address Address of the escrow PDA
mints
Address[] Token mints to query vault balances for

Returns

Promise<EscrowAccounting> An EscrowAccounting snapshot

mergeSplits()

mergeSplits(splits): Split[]
Defined in: facilitator/merge-splits.ts:3

Parameters

splits
Split[]

Returns

Split[]