Vault Operations
Withdraw fees from vault on STON.fi v2 - manage protocol fees and vault interactions This section contains SDK example for performing fee withdrawal from the vault contract
Mainnet workflow
import { Client, routerFactory } 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 userWalletAddress = "<your wallet address>";
// Retrieve pending vault fees for the wallet
const vaults = await apiClient.getWalletVaultsFee({
walletAddress: userWalletAddress,
});
const messages = await Promise.all(
vaults.map(async ({ routerAddress, assetAddress }) => {
const routerMetadata = await apiClient.getRouter(routerAddress);
const router = tonClient.open(routerFactory(routerMetadata));
if (!("getVault" in router)) {
throw new Error(
`Vault contract is not supported on router version ${routerMetadata.majorVersion}.${routerMetadata.minorVersion}`,
);
}
const tokenMinter =
assetAddress === "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c"
? routerMetadata.ptonMasterAddress
: assetAddress;
const vault = tonClient.open(
await router.getVault({
tokenMinter,
user: userWalletAddress,
}),
);
const txParams = await vault.getWithdrawFeeTxParams({
queryId: 12345,
});
return {
address: txParams.to.toString(),
amount: txParams.value.toString(),
payload: txParams.body?.toBoc().toString("base64"),
};
}),
);Testnet withdrawal (manual setup)
Last updated