Installer et créer un dépôt
- 01Installez le paquet : bun add @usdctofiat/offramp (npm et pnpm fonctionnent aussi).
- 02Passez un WalletClient viem : le wallet de l'utilisateur, un wallet serveur ou un wallet de bot.
- 03Appelez offramp(walletClient, { amount, platform, currency, identifier }).
- 04Lisez le depositId et le txHash retournés, ou échafaudez un projet avec npx create-offramp-app@latest.
La surface du SDK
| Export | Ce qu'il fait |
|---|---|
| offramp(walletClient, params) | Flux de vente d'USDC en un appel, retournant { depositId, txHash, resumed, otcLink? } |
| deposits(address) | Liste les dépôts d'une adresse sans indexer l'état du protocole |
| close(walletClient, depositId) | Retire les USDC non remplis d'un dépôt existant |
| enableOtc / disableOtc / getOtcLink | Gère la restriction privée à un seul acheteur sur un dépôt |
| useOfframp() / usePeerExtensionRegistration() | Hooks React depuis @usdctofiat/offramp/react |
| PLATFORMS, CURRENCIES | Maps de constantes typées avec identifiants, validation et listes de devises |
Reprenable par conception
La création d'un dépôt s'étend sur plusieurs étapes onchain. Si un appel précédent a laissé un dépôt en cours, rappeler offramp() reprend là où il s'était arrêté plutôt que de créer un doublon. Le flag resumed du résultat vaut true lorsqu'un dépôt non délégué existant a été adopté au lieu d'être créé.
Cela rend le SDK sûr à réessayer depuis un serveur ou un bot : un point d'entrée compatible avec l'idempotence qui se réconcilie avec l'état onchain au lieu de supposer une page blanche.
Gestion des erreurs
| Préoccupation | Comment le SDK la signale |
|---|---|
| Erreurs typées | OfframpError porte un code issu de OFFRAMP_ERROR_CODES |
| Configuration PayPal ou Wise | EXTENSION REGISTRATION REQUISES uniquement la configuration technique des signaux; appliquer séparément la politique du fournisseur |
| Validation | PLATFORMS et CURRENCIES exposent la validation des identifiants et des devises |
| Aucune garde de clés | Le SDK signe avec votre WalletClient et ne stocke jamais de clés privées |