@molecularlabs/nucleus-frontend
Version:
Nucleus BoringVault Frontend SDK
50 lines • 1.63 kB
JavaScript
import { NUCLEUS_BASE_URL } from "../constants";
let assetsCache = null;
function constructUrl(params) {
const withdrawAssetsUrl = `${NUCLEUS_BASE_URL}/withdraw-assets`;
if (!params) return withdrawAssetsUrl;
const queryParams = new URLSearchParams();
if (params.chainId) queryParams.append("chainId", params.chainId.toString());
if (params.vaultAddress)
queryParams.append("vaultAddress", params.vaultAddress.toLowerCase());
return `${withdrawAssetsUrl}?${queryParams.toString()}`;
}
async function fetchWithdrawAssets(params) {
if (!params && assetsCache) {
return assetsCache;
}
try {
const url = constructUrl(params);
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
if (!params) {
assetsCache = data;
}
return data;
} catch (error) {
throw new Error(
`An unknown error occurred while fetching withdraw assets: ${error instanceof Error ? error.message : String(error)}`
);
}
}
async function fetchChainWithdrawAssets(chainId) {
const assets = await fetchWithdrawAssets({ chainId });
return assets[chainId.toString()];
}
async function fetchVaultWithdrawAssets(chainId, vaultAddress) {
const assets = await fetchWithdrawAssets({ chainId, vaultAddress });
return assets[chainId.toString()]?.[vaultAddress.toLowerCase()];
}
function clearAssetsCache() {
assetsCache = null;
}
export {
clearAssetsCache,
fetchChainWithdrawAssets,
fetchVaultWithdrawAssets,
fetchWithdrawAssets
};
//# sourceMappingURL=withdraw-assets.mjs.map