UNPKG

@bitte-ai/agent-sdk

Version:

Agent SDK for Bitte Protocol

53 lines (52 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadSymbolMap = loadSymbolMap; exports.loadTokenMap = loadTokenMap; exports.getTokenDetails = getTokenDetails; const viem_1 = require("viem"); const erc20_1 = require("./erc20"); const TOKEN_MAP_BASE_URL = "https://raw.githubusercontent.com/BitteProtocol/core/main/public"; async function loadSymbolMap(url) { try { const response = await fetch(url); if (!response.ok) { throw new Error(`Failed to load tokens at: ${response.statusText}`); } const loadedSymbolMap = await response.json(); return loadedSymbolMap; } catch (error) { console.error("Error loading symbolMap:", error); throw error; } } const defaultChainList = [1, 10, 56, 100, 137, 1868, 8453, 4261, 43114]; function tokenMapUrl(chainId, baseUrl = TOKEN_MAP_BASE_URL) { return `${baseUrl}/tokens_${chainId}.json`; } async function loadTokenMap(chainIds = defaultChainList) { const mapping = {}; await Promise.all(chainIds.map(async (chainId) => { try { mapping[chainId] = await loadSymbolMap(tokenMapUrl(chainId)); } catch (error) { console.error(`Error loading token map for chain ${chainId}:`, error); mapping[chainId] = {}; } })); return mapping; } async function getTokenDetails(chainId, symbolOrAddress, tokenMap, // Optionally Provide your own RPC. client) { if ((0, viem_1.isAddress)(symbolOrAddress, { strict: false })) { return (0, erc20_1.getTokenInfo)(chainId, symbolOrAddress, client); } if (!tokenMap) { const symbolMap = await loadSymbolMap(tokenMapUrl(chainId)); return symbolMap[symbolOrAddress.toLowerCase()]; } // TokenMap has lower cased (sanitized) symbols return tokenMap[chainId][symbolOrAddress.toLowerCase()]; }