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:Defined in: facilitator/accounting.ts:33Map<Address,bigint>
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:Defined in: facilitator/accounting.ts:30Map<Address,bigint>
vaultBalances
vaultBalances:Defined in: facilitator/accounting.ts:28Map<Address,bigint>
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:Defined in: facilitator/hold-manager.ts:21"held"|"settled"|"submitting"|"submitted"|"finalizing"
submittedAtSlot
submittedAtSlot:Defined in: facilitator/hold-manager.ts:23bigint|null
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 =Defined in: facilitator/hold-manager.ts:243 The hold manager interface, inferred fromReturnType<typeofcreateHoldManager>
createHoldManager.
HoldResult
HoldResult = {Defined in: facilitator/hold-manager.ts:34 Discriminated result from hold operations: success or failure with reason.ok:true; } | {ok:false;reason:string; }
TryHoldParams
TryHoldParams =Defined in: facilitator/hold-manager.ts:28 Parameters for creating a new hold (lifecycle fields are added internally).Omit<Hold,"status"|"heldAt"|"submittedAtSlot"|"retryCount">
Variables
MAX_PENDING_SETTLEMENTS
Defined in: facilitator/accounting.ts:38 Maximum number of concurrent pending settlements an escrow supports.constMAX_PENDING_SETTLEMENTS:16=16
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(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.rpc,escrowAddress,mints):Promise<EscrowAccounting>
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(Defined in: facilitator/merge-splits.ts:3splits):Split[]
Parameters
splits
Split[]
Returns
Split[]