@yodlpay/tokenlists 0.8.17 → 0.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tokenlists.cjs.production.min.js","sources":["../src/types.ts","../src/getVersionUpgrade.ts","../src/abis.ts","../src/versionComparator.ts","../src/diffTokenLists.ts","../src/index.ts","../src/isVersionUpdate.ts","../src/minVersionBump.ts","../src/nextVersion.ts"],"sourcesContent":["type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n WRAPPED = 'wrapped',\n}\n\nexport interface CurveRouterInfo {\n readonly chainId: number;\n readonly address: string;\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly nativeTokenName: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n readonly dexes?: string[];\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\nimport YodlRouterV05 from \"./abis/YodlRouterV0.5.abi.json\";\nimport YodlRouterV06 from \"./abis/YodlRouterV0.6.abi.json\";\nimport YodlRouterV07 from \"./abis/YodlRouterV0.7.abi.json\";\nimport YodlRouterV08 from \"./abis/YodlRouterV0.8.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any } = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"0.5\": YodlRouterV05,\n \"0.6\": YodlRouterV06,\n \"0.7\": YodlRouterV07,\n \"0.8\": YodlRouterV08,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport CurveRouters from './curve.json';\nimport {\n ChainInfo,\n RouterInfo,\n TokenInfo,\n TestnetFaucetInfo,\n CurveRouterInfo,\n} from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nexport const tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getCurveRouterAddress(chainId: number): string {\n const curveRouter = CurveRouters.find(router => router.chainId == chainId);\n if (curveRouter == undefined) {\n throw new Error(`Unable to find CurveRouterNG for chainId ${chainId}`);\n }\n return curveRouter.address;\n}\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getFiatCurrencies() {\n return fiatCurrencies;\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeToken(chainId: number): string {\n return chainlist.chains.find(chain => chain.chainId === chainId)\n ?.nativeTokenName!;\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n"],"names":["TokenListTagNames","VersionUpgrade","YODL_ROUTER_ABIS","0.1","0.2","0.3","YodlRouterV03","0.4","0.5","0.6","0.7","0.8","test","versionComparator","versionA","versionB","major","minor","patch","diffTokenLists","base","update","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","_indexedBase$tokenInf","changes","Object","keys","filter","s","a","b","Array","isArray","every","el","i","length","changed","added","push","index","removed","list","curr","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getRouters","routerlist","routers","needle","chainlist","chains","find","curveRouter","CurveRouters","router","undefined","Error","tokenSymbol","token","symbol","toLowerCase","fiatCurrencies","c","priceFeeds","f","type","sorted","sort","Date","parse","timestamp","chain","_chainlist$chains$fin","nativeTokenName","nativeTokens","t","tags","map","tag","includes","baseSymbol","quoteSymbol","_quoteSymbol","input","output","version","shortName","tokenAddress","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"wEAEYA,ECGAC,oxjMCKCC,EAA2C,CACtDC,2uDACAC,qrLACAC,GAAOC,EACPC,iuMACAC,qxMACAC,iiWACAC,skTACAC,kvYACAC,KAAQN,YCXMO,EACdC,EACAC,GAEA,OAAID,EAASE,MAAQD,EAASC,OACpB,EACCF,EAASE,MAAQD,EAASC,MAC5B,EACEF,EAASG,MAAQF,EAASE,OAC3B,EACCH,EAASG,MAAQF,EAASE,MAC5B,EACEH,EAASI,MAAQH,EAASG,OAC3B,EACCJ,EAASI,MAAQH,EAASG,MAC5B,EAEA,WCyBKC,EACdC,EACAC,GAEA,IAAMC,EAAcF,EAAKG,QAEtB,SAACC,EAAMC,GAGR,OAFKD,EAAKC,EAAUC,WAAUF,EAAKC,EAAUC,SAAW,IACxDF,EAAKC,EAAUC,SAASD,EAAUE,SAAWF,EACtCD,IACN,IAEGI,EAAiBP,EAAOE,QAa5B,SAACC,EAAMC,WACCI,WAAYP,EAAYG,EAAUC,iBAAtBI,EAAiCL,EAAUE,SAC7D,GAAKE,EAEE,CACL,IAAME,EAA4BC,OAAOC,KAAKR,GAC3CS,QACC,SAACC,GAAD,MAAsC,YAANA,GAAyB,YAANA,KAEpDD,QAAO,SAACC,GACP,SAvEsBC,EAuEWX,EAAUU,OAvETE,EAuEaR,EAAUM,YArExDC,UAAaC,GACpBC,MAAMC,QAAQH,IAAME,MAAMC,QAAQF,IAC7BD,EAAEI,OAAM,SAACC,EAAIC,GAAL,OAAWL,EAAEK,KAAOD,MAJvC,IAAkCL,EAAYC,KAyElCN,EAAQY,OAAS,IACdnB,EAAKoB,QAAQnB,EAAUC,WAC1BF,EAAKoB,QAAQnB,EAAUC,SAAW,IAEpCF,EAAKoB,QAAQnB,EAAUC,SAASD,EAAUE,SAAWI,QAbvDP,EAAKqB,MAAMC,KAAKrB,GAyBlB,OARKD,EAAKuB,MAAMtB,EAAUC,SAKxBF,EAAKuB,MAAMtB,EAAUC,SAASD,EAAUE,UAAW,EAJnDH,EAAKuB,MAAMtB,EAAUC,iBAClBD,EAAUE,UAAU,KAMlBH,IAET,CAAEqB,MAAO,GAAID,QAAS,GAAIG,MAAO,KAG7BC,EAAU5B,EAAKG,QAAoB,SAAC0B,EAAMC,GAO9C,OALGtB,EAAemB,MAAMG,EAAKxB,UAC1BE,EAAemB,MAAMG,EAAKxB,SAASwB,EAAKvB,UAEzCsB,EAAKH,KAAKI,GAELD,IACN,IAEH,MAAO,CACLJ,MAAOjB,EAAeiB,MACtBD,QAAShB,EAAegB,QACxBI,QAAAA,IJvHQhD,EAAAA,4BAAAA,iDAGVA,sBACAA,sBACAA,wBACAA,cACAA,oBAGAA,0BACAA,YACAA,YAGAA,iBACAA,8BACAA,qBCdUC,EAAAA,yBAAAA,6CAEVA,qBACAA,qBACAA,yBIeWkD,EAAYC,EAAkBC,OAAOC,OAEhDC,YAyHcC,EAAW9B,GACzB,OAAO+B,EAAWC,QAAQxB,QAAO,SAACyB,GAChC,OAAOA,EAAOjC,UAAYA,69LA5GLA,GACvB,OAAOkC,EAAUC,OAAOC,MAAK,SAACH,GAC5B,OAAOA,EAAOjC,UAAYA,wBAN9B,WACE,OAAOkC,EAAUC,+CATmBnC,GACpC,IAAMqC,EAAcC,EAAaF,MAAK,SAAAG,GAAM,OAAIA,EAAOvC,SAAWA,KAClE,GAAmBwC,MAAfH,EACF,MAAM,IAAII,kDAAkDzC,GAE9D,OAAOqC,EAAYpC,mDA0EnByC,EACA1C,SAEA,gBACG0B,EAAkBC,OAAOS,MAAK,SAACO,GAC9B,OACEA,EAAMC,OAAOC,gBAAkBH,EAAYG,iBACzC7C,GAAW2C,EAAM3C,UAAYA,SAEf,gCAtCxB,WACE,OAAO8C,oCAPuBF,GAC9B,OAAOE,EAAeV,MACpB,SAAAW,GAAC,OAAIA,EAAEH,OAAOC,gBAAkBD,EAAOC,gDANd7C,GAC3B,OAAOgD,EAAWxC,QAAO,SAAAyC,GAAC,OAAIA,EAAEjD,UAAYA,GAAsB,SAAXiD,EAAEC,0CA6G3BlD,GAC9B,IAAMmD,EAASrB,EAAW9B,GAASoD,MAAK,SAAC1C,EAAGC,GAC1C,OAAO0C,KAAKC,MAAM5C,EAAE6C,WAAaF,KAAKC,MAAM3C,EAAE4C,cAEhD,OAAOJ,EAAOA,EAAOlC,OAAS,oCAODjB,SAC7B,gBAAOkC,EAAUC,OAAOC,MAAK,SAAAoB,GAAK,OAAIA,EAAMxD,UAAYA,aAAjDyD,EACHC,wDAGgC1D,GACpC,IAAM2D,EAAejC,EAAkBC,OAAOnB,QAC5C,SAAAoD,GAAC,OACCA,EAAE5D,UAAYA,GACd4D,EAAEC,KAAKC,KAAI,SAAAC,GAAG,OAAIA,EAAIlB,iBAAemB,SAAS,YAC9CJ,EAAEC,KAAKC,KAAI,SAAAC,GAAG,OAAIA,EAAIlB,iBAAemB,SAAS,mBAElD,GAAIL,EAAa1C,OAAS,EACxB,MAAM,IAAIwB,4DAC8CzC,GAEnD,GAAI2D,EAAa1C,OAAS,EAC/B,MAAM,IAAIwB,iDAAiDzC,GAE7D,OAAO2D,EAAa,yBA9HtB,SACE3D,EACAiE,EACAC,GAEA,IAAMC,EAAeD,GAA4B,MAOjD,OANalB,EAAWZ,MACtB,SAAAa,GAAC,MAAA,gBACCA,EAAEmB,gBAAOvB,iBAAkBoB,EAAWpB,eACtCI,EAAEoB,SAAWF,GACblB,EAAEjD,UAAYA,MAMTgD,EAAWZ,MAChB,SAAAa,GAAC,MAAA,gBACCA,EAAEmB,gBAAOvB,iBAAkBoB,EAAWpB,eACtCI,EAAEjD,UAAYA,qCAzCQA,GAC5B,OAAOgD,EAAWxC,QAAO,SAAAyC,GAAC,OAAIA,EAAEjD,UAAYA,iCA4F5CA,EACAsE,GAEA,OAAOvC,EAAWC,QAAQI,MAAK,SAACH,GAC9B,OAAOA,EAAOjC,UAAYA,GAAWiC,EAAOqC,UAAYA,0CAK1DrE,EACAD,GAYA,OADmB+B,EAAWC,QAAQI,KAFvBpC,EAJiB,SAACuC,GAAD,OAC9BA,EAAOtC,QAAQ4C,gBAAkB5C,EAAQ4C,eACzCN,EAAOvC,SAAWA,GALE,SAACuC,GAAD,OACpBA,EAAOtC,QAAQ4C,gBAAkB5C,EAAQ4C,4DAmB7C,WACE,OAAOX,EAAUC,OAAO2B,KAAI,SAAAN,GAAK,OAAIA,EAAMe,iDA3I3CC,EACAxE,SAEA,gBACGyB,EAAUW,MAAK,SAACO,GACf,OACEA,EAAM1C,QAAQ4C,gBAAkB2B,EAAa3B,iBAC3C7C,GAAW2C,EAAM3C,UAAYA,SAEf,wCAiEtB0C,EACA1C,GAEA,IAAM2B,EAASF,EAAUjB,QAAO,SAACmC,GAC/B,OACEA,EAAMC,OAAOC,gBAAkBH,EAAYG,iBACzC7C,GAAW2C,EAAM3C,UAAYA,MAInC,GAAIA,GAAW2B,GAAUA,EAAOV,OAAS,EACvC,MAAM,IAAIwB,2CAA2CC,GAGvD,OAAOf,EAAOV,OAAS,EAAIU,EAAO,GAAK,qCAvEX3B,GAC5B,OAAOgD,EAAWxC,QAAO,SAAAyC,GAAC,OAAIA,EAAEjD,UAAYA,GAAsB,WAAXiD,EAAEC,oCAyEjClD,GACxB,OAAOA,EACFyB,EAAUjB,QAAO,SAACyB,GACjB,OAAOA,EAAOjC,UAAYA,KAE3ByB,sCJ7HL/B,EACAC,GAEA,OAAIA,EAAOL,MAAQI,EAAKJ,MACff,uBAAekG,MAEpB9E,EAAOL,MAAQI,EAAKJ,MACff,uBAAemG,KAEpB/E,EAAOJ,MAAQG,EAAKH,MACfhB,uBAAeoG,MAEpBhF,EAAOJ,MAAQG,EAAKH,MACfhB,uBAAemG,KAEjB/E,EAAOH,MAAQE,EAAKF,MAAQjB,uBAAeqG,MAAQrG,uBAAemG,uCK5B3ChF,EAAeC,GAC7C,OAAOR,EAAkBO,EAAMC,GAAU,mCCGzCkF,EACAC,GAEA,IAAMC,EAAOtF,EAAeoF,EAAUC,GACtC,OAAIC,EAAKzD,QAAQL,OAAS,EAAU1C,uBAAekG,MAC/CM,EAAK5D,MAAMF,OAAS,EAAU1C,uBAAeoG,MAC7CrE,OAAOC,KAAKwE,EAAK7D,SAASD,OAAS,EAAU1C,uBAAeqG,MACzDrG,uBAAemG,mCCTIhF,EAAesF,GACzC,OAAQA,GACN,KAAKzG,uBAAemG,KAClB,OAAOhF,EAET,KAAKnB,uBAAekG,MAClB,MAAO,CAAEnF,MAAOI,EAAKJ,MAAQ,EAAGC,MAAO,EAAGC,MAAO,GAEnD,KAAKjB,uBAAeoG,MAClB,MAAO,CACLrF,MAAOI,EAAKJ,MACZC,MAAOG,EAAKH,MAAQ,EACpBC,MAAO,GAGX,KAAKjB,uBAAeqG,MAClB,MAAO,CACLtF,MAAOI,EAAKJ,MACZC,MAAOG,EAAKH,MACZC,MAAOE,EAAKF,MAAQ"}
1
+ {"version":3,"file":"tokenlists.cjs.production.min.js","sources":["../src/types.ts","../src/getVersionUpgrade.ts","../src/abis.ts","../src/versionComparator.ts","../src/diffTokenLists.ts","../src/index.ts","../src/isVersionUpdate.ts","../src/minVersionBump.ts","../src/nextVersion.ts"],"sourcesContent":["type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n WRAPPED = 'wrapped',\n}\n\nexport interface CurveRouterInfo {\n readonly chainId: number;\n readonly address: string;\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly nativeTokenName: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n readonly dexes?: string[];\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\nimport YodlRouterV05 from \"./abis/YodlRouterV0.5.abi.json\";\nimport YodlRouterV06 from \"./abis/YodlRouterV0.6.abi.json\";\nimport YodlRouterV07 from \"./abis/YodlRouterV0.7.abi.json\";\nimport YodlRouterV08 from \"./abis/YodlRouterV0.8.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any } = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"0.5\": YodlRouterV05,\n \"0.6\": YodlRouterV06,\n \"0.7\": YodlRouterV07,\n \"0.8\": YodlRouterV08,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport CurveRouters from './curve.json';\nimport {\n ChainInfo,\n RouterInfo,\n TokenInfo,\n TestnetFaucetInfo,\n CurveRouterInfo,\n} from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nexport const tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getCurveRouterAddress(chainId: number): string {\n const curveRouter = CurveRouters.find(router => router.chainId == chainId);\n if (curveRouter == undefined) {\n throw new Error(`Unable to find CurveRouterNG for chainId ${chainId}`);\n }\n return curveRouter.address;\n}\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getFiatCurrencies() {\n return fiatCurrencies;\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeToken(chainId: number): string {\n return chainlist.chains.find(chain => chain.chainId === chainId)\n ?.nativeTokenName!;\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n"],"names":["TokenListTagNames","VersionUpgrade","YODL_ROUTER_ABIS","0.1","0.2","0.3","YodlRouterV03","0.4","0.5","0.6","0.7","0.8","test","versionComparator","versionA","versionB","major","minor","patch","diffTokenLists","base","update","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","_indexedBase$tokenInf","changes","Object","keys","filter","s","a","b","Array","isArray","every","el","i","length","changed","added","push","index","removed","list","curr","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getRouters","routerlist","routers","needle","chainlist","chains","find","curveRouter","CurveRouters","router","undefined","Error","tokenSymbol","token","symbol","toLowerCase","fiatCurrencies","c","priceFeeds","f","type","sorted","sort","Date","parse","timestamp","chain","_chainlist$chains$fin","nativeTokenName","nativeTokens","t","tags","map","tag","includes","baseSymbol","quoteSymbol","_quoteSymbol","input","output","version","shortName","tokenAddress","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"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"}
@@ -209,7 +209,7 @@ var tokens = [
209
209
  name: "Glo Dollar",
210
210
  symbol: "USDGLO",
211
211
  currency: "USD",
212
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.png",
212
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.svg",
213
213
  decimals: 18,
214
214
  tags: [
215
215
  "Mainnet",
@@ -259,7 +259,7 @@ var tokens = [
259
259
  name: "Glo Dollar",
260
260
  symbol: "USDGLO",
261
261
  currency: "USD",
262
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.png",
262
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.svg",
263
263
  decimals: 18,
264
264
  tags: [
265
265
  "Optimism",
@@ -292,7 +292,7 @@ var tokens = [
292
292
  name: "Glo Dollar",
293
293
  symbol: "USDGLO",
294
294
  currency: "USD",
295
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.png",
295
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.svg",
296
296
  decimals: 18,
297
297
  tags: [
298
298
  "Base",
@@ -342,7 +342,7 @@ var tokens = [
342
342
  name: "Glo Dollar",
343
343
  symbol: "USDGLO",
344
344
  currency: "USD",
345
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.png",
345
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.svg",
346
346
  decimals: 18,
347
347
  tags: [
348
348
  "Arbitrum",
@@ -836,7 +836,7 @@ var tokens = [
836
836
  name: "Glo Dollar",
837
837
  symbol: "USDGLO",
838
838
  currency: "USD",
839
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.png",
839
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDGLO.svg",
840
840
  decimals: 18,
841
841
  tags: [
842
842
  "Polygon",
@@ -890,7 +890,7 @@ var tokens = [
890
890
  "USD",
891
891
  "featured"
892
892
  ],
893
- logoUri: "https://assets.coingecko.com/coins/images/35220/thumb/USDC.jpg?1707919050"
893
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/USDC.svg"
894
894
  },
895
895
  {
896
896
  chainId: 56,
@@ -1086,7 +1086,7 @@ var tokens = [
1086
1086
  coinGeckoId: "idrx",
1087
1087
  name: "Indonesian Rupiah Stablecoin",
1088
1088
  symbol: "IDRX",
1089
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.png",
1089
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.svg",
1090
1090
  decimals: 0,
1091
1091
  currency: "IDR",
1092
1092
  tags: [
@@ -1101,7 +1101,7 @@ var tokens = [
1101
1101
  coinGeckoId: "idrx",
1102
1102
  name: "Indonesian Rupiah Stablecoin",
1103
1103
  symbol: "IDRX",
1104
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.png",
1104
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.svg",
1105
1105
  decimals: 0,
1106
1106
  currency: "IDR",
1107
1107
  tags: [
@@ -1116,7 +1116,7 @@ var tokens = [
1116
1116
  coinGeckoId: "idrx",
1117
1117
  name: "Indonesian Rupiah Stablecoin",
1118
1118
  symbol: "IDRX",
1119
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.png",
1119
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/IDRX.svg",
1120
1120
  decimals: 2,
1121
1121
  currency: "IDR",
1122
1122
  tags: [
@@ -1206,7 +1206,7 @@ var tokens = [
1206
1206
  coinGeckoId: "brz",
1207
1207
  name: "Brazilian Digital Token",
1208
1208
  symbol: "BRZ",
1209
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRZ.webp",
1209
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRZ.svg",
1210
1210
  decimals: 18,
1211
1211
  currency: "BRL",
1212
1212
  tags: [
@@ -1222,7 +1222,7 @@ var tokens = [
1222
1222
  coinGeckoId: "brla-digital-brla",
1223
1223
  name: "BRLA Digital BRLA",
1224
1224
  symbol: "BRLA",
1225
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRLA.webp",
1225
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRLA.svg",
1226
1226
  decimals: 18,
1227
1227
  currency: "BRL",
1228
1228
  tags: [
@@ -1238,7 +1238,7 @@ var tokens = [
1238
1238
  coinGeckoId: "brz",
1239
1239
  name: "Brazilian Digital Token",
1240
1240
  symbol: "BRZ",
1241
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRZ.webp",
1241
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/BRZ.svg",
1242
1242
  decimals: 18,
1243
1243
  currency: "BRL",
1244
1244
  tags: [
@@ -1255,7 +1255,7 @@ var tokens = [
1255
1255
  name: "EURC",
1256
1256
  symbol: "EURC",
1257
1257
  currency: "EUR",
1258
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/EURC.png",
1258
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/EURC.svg",
1259
1259
  decimals: 6,
1260
1260
  tags: [
1261
1261
  "Base",
@@ -1270,7 +1270,7 @@ var tokens = [
1270
1270
  name: "EURC",
1271
1271
  symbol: "EURC",
1272
1272
  currency: "EUR",
1273
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/EURC.png",
1273
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/EURC.svg",
1274
1274
  decimals: 6,
1275
1275
  tags: [
1276
1276
  "Mainnet",
@@ -1284,7 +1284,7 @@ var tokens = [
1284
1284
  coinGeckoId: "tether-gold",
1285
1285
  name: "Tether Gold",
1286
1286
  symbol: "XAUt",
1287
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/XAUt.webp",
1287
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/tokens/XAUt.svg",
1288
1288
  decimals: 6,
1289
1289
  tags: [
1290
1290
  "Mainnet"
@@ -3639,7 +3639,7 @@ var chains = [
3639
3639
  shortName: "base",
3640
3640
  testnet: false,
3641
3641
  chainId: 8453,
3642
- logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/chains/8453/logo.png",
3642
+ logoUri: "https://kuezuu6pdfndtxdd.public.blob.vercel-storage.com/chains/8453/logo.svg",
3643
3643
  rpcUrls: [
3644
3644
  "https://mainnet.base.org"
3645
3645
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yodlpay/tokenlists",
3
- "version": "0.8.17",
3
+ "version": "0.8.18",
4
4
  "description": "Tokenlist typings, schema and lists.",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",