Instalar y crear un depósito
- 01Instala el paquete: bun add @usdctofiat/offramp (npm y pnpm también funcionan).
- 02Pasa un WalletClient de viem: la wallet del usuario, una server wallet o una wallet de bot.
- 03Llama a offramp(walletClient, { amount, platform, currency, identifier }).
- 04Lee el depositId y el txHash devueltos, o genera un proyecto con npx create-offramp-app@latest.
La superficie del SDK
| Export | Qué hace |
|---|---|
| offramp(walletClient, params) | Flujo de venta de USDC en una llamada que devuelve { depositId, txHash, resumed, otcLink? } |
| deposits(address) | Lista los depósitos de una dirección sin indexar el estado del protocolo |
| close(walletClient, depositId) | Retira el USDC no rellenado de un depósito existente |
| enableOtc / disableOtc / getOtcLink | Gestiona la restricción privada a un único comprador en un depósito |
| useOfframp() / usePeerExtensionRegistration() | Hooks de React desde @usdctofiat/offramp/react |
| PLATFORMS, CURRENCIES | Mapas const tipados con identificadores, validación y listas de divisas |
Reanudable por diseño
Crear un depósito abarca varios pasos onchain. Si una llamada anterior dejó un depósito a medias, volver a llamar a offramp() retoma donde se quedó en lugar de crear un duplicado. El flag resumed del resultado es true cuando se adoptó un depósito sin delegar existente en lugar de crear uno nuevo.
Eso hace que el SDK sea seguro de reintentar desde un servidor o un bot: un punto de entrada compatible con idempotencia que se reconcilia contra el estado onchain en lugar de asumir un punto de partida limpio.
Gestión de errores
| Aspecto | Cómo lo señala el SDK |
|---|---|
| Errores tipados | OfframpError lleva un code de OFFRAMP_ERROR_CODES |
| Configuración de PayPal o Wise | EXTENSION_REGISTRATION_REQUIRED signals technical setup only; enforce provider policy separately |
| Validación | PLATFORMS y CURRENCIES exponen validación de identificador y de divisa |
| Sin custodia de claves | El SDK firma con tu WalletClient y nunca almacena claves privadas |