@molecularlabs/nucleus-frontend
Version:
Nucleus BoringVault Frontend SDK
1 lines • 4.33 kB
Source Map (JSON)
{"version":3,"sources":["../../src/api/withdraw-assets.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { NUCLEUS_BASE_URL } from \"../constants\";\nimport type { ChainId } from \"./vault-config\";\n\nexport interface WithdrawAssetsResponse {\n [chainId: string]: {\n [vaultAddress: string]: {\n [tokenAddress: string]: number;\n };\n };\n}\n\nlet assetsCache: WithdrawAssetsResponse | null = null;\n\n/**\n * Interface for optional parameters when fetching withdraw assets\n */\ninterface FetchWithdrawAssetsParams {\n chainId?: ChainId;\n vaultAddress?: Address;\n}\n\n/**\n * Constructs the URL with optional query parameters\n */\nfunction constructUrl(params?: FetchWithdrawAssetsParams): string {\n const withdrawAssetsUrl = `${NUCLEUS_BASE_URL}/withdraw-assets`;\n if (!params) return withdrawAssetsUrl;\n\n const queryParams = new URLSearchParams();\n if (params.chainId) queryParams.append(\"chainId\", params.chainId.toString());\n if (params.vaultAddress)\n queryParams.append(\"vaultAddress\", params.vaultAddress.toLowerCase());\n\n return `${withdrawAssetsUrl}?${queryParams.toString()}`;\n}\n\n/**\n * Fetches withdraw assets configuration from the API\n * @param params Optional parameters for chainId and vaultAddress\n * @returns Promise<WithdrawAssetsResponse>\n */\nasync function fetchWithdrawAssets(\n params?: FetchWithdrawAssetsParams\n): Promise<WithdrawAssetsResponse> {\n // If no specific params are provided and we have cached data, return it\n if (!params && assetsCache) {\n return assetsCache;\n }\n\n try {\n const url = constructUrl(params);\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: WithdrawAssetsResponse = await response.json();\n\n // Only cache the full response (when no params are provided)\n if (!params) {\n assetsCache = data;\n }\n\n return data;\n } catch (error: unknown) {\n throw new Error(\n `An unknown error occurred while fetching withdraw assets: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n}\n\n/**\n * Fetches withdraw assets for a specific chain\n * @param chainId The chain ID to fetch assets for\n * @returns Promise<WithdrawAssetsResponse[string]>\n */\nasync function fetchChainWithdrawAssets(\n chainId: ChainId\n): Promise<WithdrawAssetsResponse[string]> {\n const assets = await fetchWithdrawAssets({ chainId });\n return assets[chainId.toString()];\n}\n\n/**\n * Fetches withdraw assets for a specific vault on a chain\n * @param chainId The chain ID\n * @param vaultAddress The vault address\n * @returns Promise<WithdrawAssetsResponse[string][string]>\n */\nasync function fetchVaultWithdrawAssets(\n chainId: ChainId,\n vaultAddress: Address\n): Promise<WithdrawAssetsResponse[string][string]> {\n const assets = await fetchWithdrawAssets({ chainId, vaultAddress });\n return assets[chainId.toString()]?.[vaultAddress.toLowerCase()];\n}\n\n/**\n * Clears the assets cache\n */\nfunction clearAssetsCache(): void {\n assetsCache = null;\n}\n\nexport {\n clearAssetsCache,\n fetchChainWithdrawAssets,\n fetchVaultWithdrawAssets,\n fetchWithdrawAssets,\n type FetchWithdrawAssetsParams,\n};\n"],"mappings":"AACA,SAAS,wBAAwB;AAWjC,IAAI,cAA6C;AAajD,SAAS,aAAa,QAA4C;AAChE,QAAM,oBAAoB,GAAG,gBAAgB;AAC7C,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,cAAc,IAAI,gBAAgB;AACxC,MAAI,OAAO,QAAS,aAAY,OAAO,WAAW,OAAO,QAAQ,SAAS,CAAC;AAC3E,MAAI,OAAO;AACT,gBAAY,OAAO,gBAAgB,OAAO,aAAa,YAAY,CAAC;AAEtE,SAAO,GAAG,iBAAiB,IAAI,YAAY,SAAS,CAAC;AACvD;AAOA,eAAe,oBACb,QACiC;AAEjC,MAAI,CAAC,UAAU,aAAa;AAC1B,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,MAAM,aAAa,MAAM;AAC/B,UAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,IAC1D;AAEA,UAAM,OAA+B,MAAM,SAAS,KAAK;AAGzD,QAAI,CAAC,QAAQ;AACX,oBAAc;AAAA,IAChB;AAEA,WAAO;AAAA,EACT,SAAS,OAAgB;AACvB,UAAM,IAAI;AAAA,MACR,6DACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;AAAA,IACF;AAAA,EACF;AACF;AAOA,eAAe,yBACb,SACyC;AACzC,QAAM,SAAS,MAAM,oBAAoB,EAAE,QAAQ,CAAC;AACpD,SAAO,OAAO,QAAQ,SAAS,CAAC;AAClC;AAQA,eAAe,yBACb,SACA,cACiD;AACjD,QAAM,SAAS,MAAM,oBAAoB,EAAE,SAAS,aAAa,CAAC;AAClE,SAAO,OAAO,QAAQ,SAAS,CAAC,IAAI,aAAa,YAAY,CAAC;AAChE;AAKA,SAAS,mBAAyB;AAChC,gBAAc;AAChB;","names":[]}