UNPKG

@paxoslabs/earn-sdk

Version:
1 lines 7.2 kB
{"version":3,"sources":["../src/api/withdraw-assets.ts","../src/api/solver-slippage.ts"],"names":[],"mappings":";;;AAYA,IAAI,WAAA,GAA6C,IAAA;AAajD,SAAS,aAAa,MAAA,EAA4C;AAChE,EAAA,MAAM,iBAAA,GAAoB,GAAG,gBAAgB,CAAA,gBAAA,CAAA;AAC7C,EAAA,IAAI,CAAC,QAAQ,OAAO,iBAAA;AAEpB,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AACxC,EAAA,IAAI,MAAA,CAAO,SAAS,WAAA,CAAY,MAAA,CAAO,WAAW,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AAC3E,EAAA,IAAI,MAAA,CAAO,YAAA;AACT,IAAA,WAAA,CAAY,MAAA,CAAO,cAAA,EAAgB,MAAA,CAAO,YAAA,CAAa,aAAa,CAAA;AAEtE,EAAA,OAAO,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,WAAA,CAAY,UAAU,CAAA,CAAA;AACvD;AAOA,eAAe,oBACb,MAAA,EACiC;AAEjC,EAAA,IAAI,CAAC,UAAU,WAAA,EAAa;AAC1B,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,aAAa,MAAM,CAAA;AAC/B,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAEhC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,IAAA,GAA+B,MAAM,QAAA,CAAS,IAAA,EAAK;AAGzD,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,WAAA,GAAc,IAAA;AAAA,IAChB;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAgB;AACvB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,6DACE,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CACvD,CAAA;AAAA,KACF;AAAA,EACF;AACF;;;AC1DA,eAAsB,gBAAA,CACpB,OAAA,EACA,YAAA,EACA,YAAA,EACA,kBAA0B,yBAAA,EAC1B;AACA,EAAA,IAAI;AAEF,IAAA,MAAM,cAAA,GAAiB,MAAM,mBAAA,EAAoB;AACjD,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAO,eAAA;AAAA,IACT;AACA,IAAA,IAAI,CAAC,cAAA,CAAe,OAAA,CAAQ,QAAA,EAAU,CAAA,EAAG;AACvC,MAAA,OAAO,eAAA;AAAA,IACT;AACA,IAAA,IAAI,CAAC,eAAe,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,YAAA,CAAa,WAAA,EAAa,CAAA,EAAG;AACnE,MAAA,OAAO,eAAA;AAAA,IACT;AACA,IAAA,IACE,CAAC,cAAA,CAAe,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,YAAA,CAAa,WAAA,EAAa,CAAA,CAC5D,YAAA,CAAa,WAAA,EACf,CAAA,EACA;AACA,MAAA,OAAO,eAAA;AAAA,IACT;AAEA,IAAA,OAAO,cAAA,CAAe,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,YAAA,CAAa,WAAA,EAAa,CAAA,CAClE,YAAA,CAAa,WAAA,EACf,CAAA;AAAA,EACF,SAAS,KAAA,EAAO;AAEd,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,wCAAA,EAA2C,OAAO,CAAA,EAAA,EAChD,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CACvD,CAAA;AAAA,KACF;AAAA,EACF;AACF","file":"chunk-3K72Y6ME.mjs","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","import type { Address } from \"viem\";\nimport { DEFAULT_WITHDRAW_SLIPPAGE } from \"../constants\";\nimport type { ChainId } from \"./vault-config\";\nimport { fetchWithdrawAssets } from \"./withdraw-assets\";\n\n/**\n * Gets the slippage value for a specific asset in a vault\n * @param chainId The chain ID\n * @param vaultAddress The boring vault address\n * @param tokenAddress The token address\n * @param defaultSlippage Optional default slippage value if none is found (defaults to 0)\n * @returns Promise<number> The slippage value\n * @throws {AssetSlippageError} If there's an error fetching or processing the slippage data\n */\n// TODO: This is a temporary function or should be moved and refactored to get the slippage value for a specific asset in a vault\nexport async function getAssetSlippage(\n chainId: ChainId,\n vaultAddress: Address,\n tokenAddress: Address,\n defaultSlippage: number = DEFAULT_WITHDRAW_SLIPPAGE\n) {\n try {\n // Fetch withdraw assets data, using cache if available\n const withdrawAssets = await fetchWithdrawAssets();\n if (!withdrawAssets) {\n return defaultSlippage;\n }\n if (!withdrawAssets[chainId.toString()]) {\n return defaultSlippage;\n }\n if (!withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()]) {\n return defaultSlippage;\n }\n if (\n !withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()][\n tokenAddress.toLowerCase()\n ]\n ) {\n return defaultSlippage;\n }\n\n return withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()][\n tokenAddress.toLowerCase()\n ];\n } catch (error) {\n // Re-throw with contextual information\n throw new Error(\n `Error fetching asset slippage for chain ${chainId}: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n}\n"]}