Reembolsar liquidez (v2)

Reembolsa liquidez en STON.fi v2: gestiona operaciones fallidas con una arquitectura basada en vault

Reembolsa los tokens que se enviaron a una cuenta LP pero no se añadieron al pool.

El enfoque listo para producción es basado en API. Usa la API de STON.fi para resolver los metadatos del router, construye los contratos mediante dexFactory, y deja que el SDK derive las llamadas correctas en cadena. Esto evita codificar direcciones de forma fija y sigue siendo compatible con futuras actualizaciones del router.

Flujo de trabajo en mainnet

  1. Determina el router y la cuenta LP que necesita el reembolso. Puedes obtenerlos del resultado de la simulación, de getPoolsByAssetPair, o de getWalletLpAccounts en la API de STON.fi.

  2. Obtén los metadatos del router con getRouter(routerAddress) y construye las instancias de contrato dinámicamente.

  3. Llama a getRefundTxParams en la cuenta LP para obtener el mensaje que necesitas enviar en cadena.

import { Client, dexFactory } from "@ston-fi/sdk";
import { StonApiClient } from "@ston-fi/api";

const tonClient = new Client({
  endpoint: "https://toncenter.com/api/v2/jsonRPC",
  apiKey: process.env.TON_API_KEY,
});

const apiClient = new StonApiClient();

const routerMetadata = await apiClient.getRouter("<router address>");
const dexContracts = dexFactory(routerMetadata);

const lpAccount = tonClient.open(
  dexContracts.LpAccount.create("<lp account address>"),
);

// Opcional: inspecciona los saldos pendientes antes de reembolsar
const lpAccountData = await lpAccount.getLpAccountData();
console.log({
  routerAddress: lpAccountData.routerAddress?.toString(),
  poolAddress: lpAccountData.poolAddress?.toString(),
  tokenABalance: lpAccountData.amount0.toString(),
  tokenBBalance: lpAccountData.amount1.toString(),
});

const refundTxParams = await lpAccount.getRefundTxParams({
  queryId: 12345,
});

Envía los parámetros resultantes usando tu integración de wallet preferida (consulta la guía para enviar transacciones).

Derivación de la dirección de la cuenta LP

Si solo conoces los activos y la wallet del usuario:

Luego puedes pasar lpAccountAddress al flujo principal anterior.

Pools de TON: Cuando un pool incluye TON, los metadatos del router exponen ptonMasterAddress. dexFactory vincula automáticamente las implementaciones correctas de pool/LP; no se requiere configuración manual de proxy.

Reembolso en testnet (configuración manual)

Usa testnet solo para experimentación. Debido a que api.ston.fi solo está disponible en mainnet, debes codificar manualmente las direcciones de contrato, acuñar u obtener los jettons de testnet (TesREED/TestBlue) y crear pools financiados antes de poder reembolsar cuentas LP.

Este enfoque manual es estrictamente para pruebas. Vuelve al flujo basado en API para cualquier integración orientada a mainnet.

Última actualización