@paxoslabs/earn-sdk
Version:
Paxos Labs Earn SDK
1 lines • 3.4 kB
Source Map (JSON)
{"version":3,"sources":["../src/api/vault-config.ts"],"names":[],"mappings":";AAYA,IAAI,WAAA,GAA0C,IAAA;AAavC,SAAS,UAAU,KAAA,EAAwB;AAChD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,OAAO,KAAK,CAAA;AACzD;AAMA,eAAe,iBAAA,GAAkD;AAC/D,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,8CAA8C,CAAA;AAC3E,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,EACrE;AACA,EAAA,MAAM,IAAA,GAA4B,MAAM,QAAA,CAAS,IAAA,EAAK;AACtD,EAAA,WAAA,GAAc,IAAA;AACd,EAAA,OAAO,WAAA;AACT;AAOA,eAAe,iBAAiB,QAAA,EAA6C;AAC3E,EAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AACxC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA;AACrC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAQ,CAAA,CAAE,CAAA;AAAA,EAC/D;AACA,EAAA,OAAO,KAAA;AACT","file":"chunk-4URQP4CS.mjs","sourcesContent":["import type { Chain } from \"viem/chains\";\nimport type { Vault, VaultKey } from \"../vaults/config\";\n\n// Type for chain IDs supported by the vault configuration\nexport type ChainId = number | `${number}`;\n\n// Type for the vault configuration response\nexport interface VaultConfigResponse {\n chains: { [key: string]: Chain };\n vaults: { [key: string]: Vault };\n}\n\nlet configCache: VaultConfigResponse | null = null;\n\n/**\n * Validates if a chain ID is supported by checking the vault configuration\n */\nexport async function isChainSupported(chainId: ChainId): Promise<boolean> {\n const config = await fetchVaultConfigs();\n return chainId.toString() in config.chains;\n}\n\n/**\n * Gets the numeric chain ID from any valid chain ID input\n */\nexport function toChainId(value: ChainId): number {\n return typeof value === \"number\" ? value : Number(value);\n}\n\n/**\n * Fetches vault configurations from the API\n * @returns Promise<VaultConfigResponse>\n */\nasync function fetchVaultConfigs(): Promise<VaultConfigResponse> {\n if (configCache) {\n return configCache;\n }\n\n const response = await fetch(\"https://api.nucleusearn.io/prod/vault-config\");\n if (!response.ok) {\n throw new Error(`API request failed with status ${response.status}`);\n }\n const data: VaultConfigResponse = await response.json();\n configCache = data;\n return configCache;\n}\n\n/**\n * Fetches configuration for a specific vault\n * @param vaultKey The vault key to fetch configuration for (can be a known VaultKey or a new vault key from the API)\n * @returns Promise<Vault>\n */\nasync function fetchVaultConfig(vaultKey: VaultKey | string): Promise<Vault> {\n const configs = await fetchVaultConfigs();\n const vault = configs.vaults[vaultKey];\n if (!vault) {\n throw new Error(`Vault config not found for key: ${vaultKey}`);\n }\n return vault;\n}\n\n/**\n * Gets a specific chain configuration\n * @param chainId The chain ID to fetch configuration for\n * @returns Promise<Chain>\n */\nasync function getChainConfig(chainId: ChainId): Promise<Chain> {\n const configs = await fetchVaultConfigs();\n const key = chainId.toString();\n const chain = configs.chains[key];\n if (!chain) {\n throw new Error(`Chain config not found for ID: ${chainId}`);\n }\n return chain;\n}\n\n/**\n * Clears the configuration cache\n */\nfunction clearConfigCache(): void {\n configCache = null;\n}\n\nexport {\n clearConfigCache,\n fetchVaultConfig,\n fetchVaultConfigs,\n getChainConfig,\n};\n\n"]}