Community-built toolkit for Flare
The typed toolkit for Flare.
One API for every Flare operation — mint, swap, attest, stake — from a script to a React widget to an agent, with the proofs and long waits handled for you.
- TypeScript-first
- Coston2 + XRPL Testnet
- MIT licensed
Operation is awaiting external.
- Send the XRP paymentyour walletCore vaultrMOCKC…dgerMemo0x46425052…adbeefXRPL paymentMOCK000000…F045A8
- Confirm on the XRP Ledgerthe XRP Ledger
- Prove the payment through the Flare Data Connectorthe Flare Data Connector
- Execute the mintingthe executor
- Credit the FAssetFlareRecipient0xDeaD…beeF
The packages
- @flarekit-dev/coreThe durable operation lifecycle: intent, quote, plan, execution, evidence, recovery. Headless.
- @flarekit-dev/reactProvider and hooks over the lifecycle. A live kit or the mock, unchanged.
- @flarekit-dev/react-uiStyled, embeddable widgets — hand-written CSS on the DESIGN.md tokens.
- @flarekit-dev/contractsTyped ABIs and the one address registry for Flare networks.
Start on the mock
Build the whole flow with no wallet.
The mock is a real seeded state machine, not a set of fixtures. Build and test the entire operation — long waits, partial outcomes, recovery — then change one line of kit construction to go live on Coston2 or Flare mainnet.
Read the quickstart$ npm install @flarekit-dev/core @flarekit-dev/react @flarekit-dev/react-ui
import { createMockKit } from '@flarekit-dev/core'
// A real, seeded state machine — no wallet, no chain, no funds.
const kit = createMockKit({ seed: 'demo', scenario: 'happy' })
const record = kit.start({
amountXrp: '25.000000',
recipient: '0xDeaD…beEF',
xrplAccount: 'rPT1Sjq…bpAYe',
})Why it is shaped this way
Built for operations that take time.
A direct FXRP mint spans 8–15 minutes across three actors. The kit is designed around that, not around the happy second.
One lifecycle for every operation
Mint, swap, attest and stake share one durable record, one spine and one recovery matrix — not a screen each that drifts apart.
It never fakes an outcome
A submitted operation is never shown as succeeded, and an unknown result is never shown as failed. A partial outcome stays partial.
Long waits are legible
A multi-chain wait is never a spinner. Every wait names its stage, the actor being waited on, the expected end and your safe action.
Network is configuration
Testnet first, mainnet-capable. Every address comes from one registry, so moving networks is a change of construction, not a rewrite.
Ship your first Flare operation.
Scaffold an app against the mock, then point it at Coston2 when you are ready.