Installa e crea un deposito
- 01Installa il pacchetto: bun add @usdctofiat/offramp (funzionano anche npm e pnpm).
- 02Passa un viem WalletClient: il wallet dell'utente, un server wallet o un bot wallet.
- 03Chiama offramp(walletClient, { amount, platform, currency, identifier }).
- 04Leggi depositId e txHash restituiti, oppure crea l'impalcatura di un progetto con npx create-offramp-app@latest.
La superficie dell'SDK
| Export | Cosa fa |
|---|---|
| offramp(walletClient, params) | Flusso di vendita USDC in una chiamata che restituisce { depositId, txHash, resumed, otcLink? } |
| deposits(address) | Elenca i depositi di un indirizzo senza indicizzare lo stato del protocollo |
| close(walletClient, depositId) | Preleva gli USDC non riempiti da un deposito esistente |
| enableOtc / disableOtc / getOtcLink | Gestisci la restrizione privata a un solo acquirente su un deposito |
| useOfframp() / usePeerExtensionRegistration() | Hook React da @usdctofiat/offramp/react |
| PLATFORMS, CURRENCIES | Mappe const tipizzate con identificatori, validazione ed elenchi di valute |
Riprendibile by design
Creare un deposito comporta diversi passaggi onchain. Se una chiamata precedente ha lasciato un deposito a metà, richiamare offramp() riprende da dove si era interrotto invece di creare un duplicato. Il flag resumed del risultato è true quando viene adottato un deposito esistente non ancora delegato anziché crearne uno nuovo.
Questo rende l'SDK sicuro da ritentare da un server o da un bot: un entry point idempotency-friendly che si riconcilia con lo stato onchain invece di presumere una situazione pulita.
Gestione degli errori
| Aspetto | Come l'SDK lo segnala |
|---|---|
| Errori tipizzati | OfframpError porta un code da OFFRAMP_ERROR_CODES |
| Configurazione PayPal o Wise | EXTENSION_REGISTRATION_REQUIRED segnala solo la configurazione tecnica; applica la politica del fornitore separatamente |
| Validazione | PLATFORMS e CURRENCIES espongono la validazione di identificatore e valuta |
| Nessuna custodia delle chiavi | L'SDK firma con il tuo WalletClient e non memorizza mai le chiavi private |