@yodlpay/tokenlists 0.3.2 → 0.3.34

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.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
1
  # Tokenlists
2
2
 
3
3
  Lists of supported chains, tokens, routers for the Web3 Payment Network.
4
+
5
+ # Publish new version
@@ -148,6 +148,26 @@
148
148
  },
149
149
  "curveRouterAddress": "0xe6358f6a45b502477e83cc1cda759f540e4459ee"
150
150
  },
151
+ {
152
+ "chainName": "Base",
153
+ "shortName": "base",
154
+ "testnet": false,
155
+ "chainId": 8453,
156
+ "logoUri": "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/8453/logo.png",
157
+ "rpcUrls": ["https://mainnet.base.org"],
158
+ "wrappedNativeToken": "0x4200000000000000000000000000000000000006",
159
+ "explorerUrl": "https://basescan.org",
160
+ "timestamp": "2024-06-17T14:52:05+00:00",
161
+ "feeTreasury": "0x46959a8a332eca1a05Bd4F18115b8F2E1C2F2f05",
162
+ "priceFeeds": {
163
+ "BRL": "0x0b0E64c05083FdF9ED7C5D3d8262c4216eFc9394",
164
+ "EUR": "0xc91D87E81faB8f93699ECf7Ee9B44D11e1D53F0F"
165
+ },
166
+ "tokenFeeds": {
167
+ "ETH": "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70"
168
+ },
169
+ "curveRouterAddress": "0x0000000000000000000000000000000000000000"
170
+ },
151
171
  {
152
172
  "chainName": "Polygon",
153
173
  "shortName": "matic",
@@ -77,6 +77,20 @@
77
77
  "timestamp": "2023-09-07T00:00:00+00:00",
78
78
  "version": "0.2",
79
79
  "fee": "0.002"
80
+ },
81
+ {
82
+ "chainId": 8453,
83
+ "address": "0x2BaE9Bb53BCe89c760dBfA55D854D43ab96EE19f",
84
+ "timestamp": "2024-06-17T15:50:00+00:00",
85
+ "version": "0.2",
86
+ "fee": "0.002"
87
+ },
88
+ {
89
+ "chainId": 8453,
90
+ "address": "0x775397bf2f68af5aba4029260c1f44770b77d513",
91
+ "timestamp": "2024-06-18T17:50:00+00:00",
92
+ "version": "0.3",
93
+ "fee": "0.002"
80
94
  }
81
95
  ]
82
96
  }
@@ -50,6 +50,20 @@
50
50
  ],
51
51
  "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
52
52
  },
53
+ {
54
+ "chainId": 8453,
55
+ "coinGeckoId": "ethereum",
56
+ "name": "Ether",
57
+ "symbol": "ETH",
58
+ "logoUri": "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",
59
+ "decimals": 18,
60
+ "tags": [
61
+ "Base",
62
+ "Native Token",
63
+ "Top10"
64
+ ],
65
+ "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
66
+ },
53
67
  {
54
68
  "chainId": 1,
55
69
  "coinGeckoId": "weth",
@@ -89,6 +103,19 @@
89
103
  ],
90
104
  "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
91
105
  },
106
+ {
107
+ "chainId": 8453,
108
+ "coinGeckoId": "weth",
109
+ "name": "Wrapped Ether",
110
+ "symbol": "WETH",
111
+ "logoUri": "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",
112
+ "decimals": 18,
113
+ "tags": [
114
+ "Base",
115
+ "Native Token"
116
+ ],
117
+ "address": "0x4200000000000000000000000000000000000006"
118
+ },
92
119
 
93
120
  {
94
121
  "chainId": 1,
@@ -186,6 +213,22 @@
186
213
  ],
187
214
  "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85"
188
215
  },
216
+ {
217
+ "chainId": 8453,
218
+ "coinGeckoId": "usd-coin",
219
+ "name": "USD Coin",
220
+ "symbol": "USDC",
221
+ "currency": "USD",
222
+ "logoUri": "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",
223
+ "decimals": 6,
224
+ "tags": [
225
+ "Base",
226
+ "Stablecoin",
227
+ "Top10",
228
+ "USD"
229
+ ],
230
+ "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
231
+ },
189
232
  {
190
233
  "chainId": 42161,
191
234
  "coinGeckoId": "usd-coin",
@@ -54,6 +54,20 @@ var tokens = [
54
54
  ],
55
55
  address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
56
56
  },
57
+ {
58
+ chainId: 8453,
59
+ coinGeckoId: "ethereum",
60
+ name: "Ether",
61
+ symbol: "ETH",
62
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",
63
+ decimals: 18,
64
+ tags: [
65
+ "Base",
66
+ "Native Token",
67
+ "Top10"
68
+ ],
69
+ address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
70
+ },
57
71
  {
58
72
  chainId: 1,
59
73
  coinGeckoId: "weth",
@@ -93,6 +107,19 @@ var tokens = [
93
107
  ],
94
108
  address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
95
109
  },
110
+ {
111
+ chainId: 8453,
112
+ coinGeckoId: "weth",
113
+ name: "Wrapped Ether",
114
+ symbol: "WETH",
115
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",
116
+ decimals: 18,
117
+ tags: [
118
+ "Base",
119
+ "Native Token"
120
+ ],
121
+ address: "0x4200000000000000000000000000000000000006"
122
+ },
96
123
  {
97
124
  chainId: 1,
98
125
  coinGeckoId: "tether",
@@ -189,6 +216,22 @@ var tokens = [
189
216
  ],
190
217
  address: "0x0b2c639c533813f4aa9d7837caf62653d097ff85"
191
218
  },
219
+ {
220
+ chainId: 8453,
221
+ coinGeckoId: "usd-coin",
222
+ name: "USD Coin",
223
+ symbol: "USDC",
224
+ currency: "USD",
225
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",
226
+ decimals: 6,
227
+ tags: [
228
+ "Base",
229
+ "Stablecoin",
230
+ "Top10",
231
+ "USD"
232
+ ],
233
+ address: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
234
+ },
192
235
  {
193
236
  chainId: 42161,
194
237
  coinGeckoId: "usd-coin",
@@ -752,6 +795,28 @@ var chains = [
752
795
  },
753
796
  curveRouterAddress: "0xe6358f6a45b502477e83cc1cda759f540e4459ee"
754
797
  },
798
+ {
799
+ chainName: "Base",
800
+ shortName: "base",
801
+ testnet: false,
802
+ chainId: 8453,
803
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/8453/logo.png",
804
+ rpcUrls: [
805
+ "https://mainnet.base.org"
806
+ ],
807
+ wrappedNativeToken: "0x4200000000000000000000000000000000000006",
808
+ explorerUrl: "https://basescan.org",
809
+ timestamp: "2024-06-17T14:52:05+00:00",
810
+ feeTreasury: "0x46959a8a332eca1a05Bd4F18115b8F2E1C2F2f05",
811
+ priceFeeds: {
812
+ BRL: "0x0b0E64c05083FdF9ED7C5D3d8262c4216eFc9394",
813
+ EUR: "0xc91D87E81faB8f93699ECf7Ee9B44D11e1D53F0F"
814
+ },
815
+ tokenFeeds: {
816
+ ETH: "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70"
817
+ },
818
+ curveRouterAddress: "0x0000000000000000000000000000000000000000"
819
+ },
755
820
  {
756
821
  chainName: "Polygon",
757
822
  shortName: "matic",
@@ -878,6 +943,20 @@ var routers = [
878
943
  timestamp: "2023-09-07T00:00:00+00:00",
879
944
  version: "0.2",
880
945
  fee: "0.002"
946
+ },
947
+ {
948
+ chainId: 8453,
949
+ address: "0x2BaE9Bb53BCe89c760dBfA55D854D43ab96EE19f",
950
+ timestamp: "2024-06-17T15:50:00+00:00",
951
+ version: "0.2",
952
+ fee: "0.002"
953
+ },
954
+ {
955
+ chainId: 8453,
956
+ address: "0x775397bf2f68af5aba4029260c1f44770b77d513",
957
+ timestamp: "2024-06-18T17:50:00+00:00",
958
+ version: "0.3",
959
+ fee: "0.002"
881
960
  }
882
961
  ];
883
962
  var routerlist = {
@@ -2367,6 +2446,7 @@ var CURVE_ROUTER_ABI = CurveRouterV13Abi;
2367
2446
  TokenListTagNames["OPTIMISM"] = "Optimism";
2368
2447
  TokenListTagNames["ARBITRUM"] = "Arbitrum";
2369
2448
  TokenListTagNames["AVALANCHE"] = "Avalanche";
2449
+ TokenListTagNames["BASE"] = "Base";
2370
2450
  TokenListTagNames["TESTNET"] = "TESTNET"; // Coin/currency
2371
2451
 
2372
2452
  TokenListTagNames["STABLECOIN"] = "Stablecoin";
@@ -1 +1 @@
1
- {"version":3,"file":"tokenlists.cjs.development.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","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 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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 { 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 { 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 { 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 { 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","import tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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"],"names":["HIRO_ROUTER_ABIS","HiroRouterV01","HiroRouterV02","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","getChain","chainlist","chains","find","needle","getTokenByAddress","tokenAddress","tokenlist","tokens","token","toLowerCase","getTokenBySymbol","tokenSymbol","symbol","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,gBAAgB,GAA0B;EACrD,OAAOC,aAD8C;EAErD,O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"}
1
+ {"version":3,"file":"tokenlists.cjs.development.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 { 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 { 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 { 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 { 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","import tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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"],"names":["HIRO_ROUTER_ABIS","HiroRouterV01","HiroRouterV02","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","getChain","chainlist","chains","find","needle","getTokenByAddress","tokenAddress","tokenlist","tokens","token","toLowerCase","getTokenBySymbol","tokenSymbol","symbol","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t,a={name:"Default",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo.png",keywords:[],version:{major:0,minor:0,patch:1},tokens:[{chainId:1,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Mainnet","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:10,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Optimism","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:42161,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Arbitrum","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:1,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Mainnet","Native Token"],address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{chainId:10,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Optimism","Native Token"],address:"0x4200000000000000000000000000000000000006"},{chainId:42161,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Arbitrum","Native Token"],address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},{chainId:1,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0xdac17f958d2ee523a2206206994597c13d831ec7"},{chainId:10,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x94b008aa00579c1307b0ef2c499ad98a8ce58e58"},{chainId:42161,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"},{chainId:1,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{chainId:10,coinGeckoId:"usd-coin",name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x7f5c764cbc14f9669b88837ca1490cca17c31607"},{chainId:10,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x0b2c639c533813f4aa9d7837caf62653d097ff85"},{chainId:42161,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},{chainId:42161,coinGeckoId:"usd-coin",name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"},{chainId:1,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0x6b175474e89094c44da98b954eedeac495271d0f"},{chainId:10,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Optimism","Stablecoin","Top10","USD"],address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"},{chainId:42161,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"},{chainId:1,coinGeckoId:"crvusd",name:"crvUSD",symbol:"crvUSD",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/crvUSD.svg",decimals:18,tags:["Mainnet","Stablecoin","USD"],address:"0xf939e0a03fb07f59a73314e73794be0e57ac1b4e"},{chainId:1,coinGeckoId:"monerium-eur-money",name:"EURe",symbol:"EURe",currency:"EUR",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg",decimals:18,tags:["Mainnet","Stablecoin","EUR"],address:"0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f"},{chainId:5,name:"XUSD",symbol:"XUSD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:18,tags:["TESTNET"],address:"0x33ca3889bb0032e9c3794b608a242d27e7293353"},{chainId:5,name:"USDC.test",symbol:"USDC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:18,tags:["TESTNET"],address:"0xe5768E2dDEc1E50Ac2672a2d75D63d36A8Ec88d9"},{chainId:5,name:"USDT.test",symbol:"USDT",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:18,tags:["TESTNET"],address:"0xeB87E5d9c773d3E802989295147564985B5B358C"},{chainId:43114,coinGeckoId:"dai",address:"0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",decimals:18,name:"Dai Stablecoin",symbol:"DAI.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg"},{chainId:43114,coinGeckoId:"tether",address:"0xc7198437980c041c805A1EDcbA50c1Ce5db95118",decimals:6,name:"Tether - Bridged",symbol:"USDT.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:43114,coinGeckoId:"usd-coin",address:"0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",decimals:6,name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:43114,coinGeckoId:"magic-internet-money",address:"0x130966628846BFd36ff31a822705796e8cb8C18D",decimals:18,name:"Magic Internet Money",symbol:"MIM",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/MIM.svg"},{chainId:43114,coinGeckoId:"usd-coin",address:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",decimals:6,name:"USD Coin",symbol:"USDC",currency:"USD",tags:["Avalanche","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:43114,coinGeckoId:"tether",address:"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",decimals:6,name:"Tether",symbol:"USDT",currency:"USD",tags:["Avalanche","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:100,coinGeckoId:"tether",address:"0x4ECaBa5870353805a9F068101A40E0f32ed605C6",decimals:6,name:"Tether",symbol:"USDT",currency:"USD",tags:["Gnosis","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:100,coinGeckoId:"usd-coin",address:"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",decimals:6,name:"USD Coin",symbol:"USDC",currency:"USD",tags:["Gnosis","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:100,coinGeckoId:"xdai",address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",decimals:18,name:"xDAI",symbol:"xDAI",currency:"USD",tags:["Gnosis","Stablecoin","Native Token"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/xDAI.svg"},{chainId:100,coinGeckoId:"wrapped-xdai",address:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",decimals:18,name:"wxDAI",symbol:"wxDAI",currency:"USD",tags:["Gnosis","Stablecoin","Native Token"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/wxDAI.svg"},{chainId:100,coinGeckoId:"monerium-eur-money",address:"0xcB444e90D8198415266c6a2724b7900fb12FC56E",decimals:18,name:"EURe",symbol:"EURe",currency:"EUR",tags:["Gnosis","Stablecoin"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg"},{chainId:137,coinGeckoId:"matic-network",name:"MATIC",symbol:"MATIC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",decimals:18,tags:["Polygon","Native Token"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:137,coinGeckoId:"matic-network",name:"Wrapped MATIC",symbol:"WMATIC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",decimals:18,tags:["Polygon","Native Token"],address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},{chainId:137,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Polygon","Stablecoin","Top10","USD"],address:"0xc2132D05D31c914a87C6611C10748AEb04B58e8F"},{chainId:137,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Polygon","Stablecoin","Top10","USD"],address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"},{chainId:137,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Polygon","Stablecoin","Top10","USD"],address:"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"},{chainId:137,coinGeckoId:"monerium-eur-money",address:"0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",decimals:18,name:"EURe",symbol:"EURe",currency:"EUR",tags:["Polygon","Stablecoin"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg"}],timestamp:"2021-09-07T00:00:00+00:00"},n={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},chains:[{chainName:"Ethereum",shortName:"eth",testnet:!1,chainId:1,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/1/logo.svg",rpcUrls:["https://rpc.ankr.com/eth"],wrappedNativeToken:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",explorerUrl:"https://etherscan.io",timestamp:"2022-12-29T18:52:20+00:00",feeTreasury:"0x9C48d180e4eEE0dA2A899EE1E4c533cA5e92db77",priceFeeds:{AUD:"0x77f9710e7d0a19669a13c055f62cd80d313df022",CAD:"0xa34317db73e77d453b1b8d04550c44d10e981c8e",CHF:"0x449d117117838ffa61263b61da6301aa2a88b13a",EUR:"0xb49f677943bc038e9857d61e7d053caa2c1734c1",GBP:"0x5c0ab2d9b5a7ed9f470386e82bb36a3613cdd4b5",JPY:"0xbce206cae7f0ec07b545edde332a47c2f75bbeb3",CNY:"0xef8a4af35cd47424672e3c590abd37fbb7a7759a",KRW:"0x01435677fb11763550905594a16b645847c1d0f3",NZD:"0x3977cfc9e4f29c184d4675f4eb8e0013236e5f3e",SGD:"0xe25277ff4bbf9081c75ab0eb13b4a13a721f3e13",TRY:"0xb09fc5fd3f11cf9eb5e1c5dba43114e3c9f477b5"},tokenFeeds:{ETH:"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"},curveRouterAddress:"0x99a58482BD75cbab83b27EC03CA68fF489b5788f"},{chainName:"Ethereum Goerli",shortName:"gor",testnet:!0,chainId:5,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/5/logo.svg",rpcUrls:["https://rpc.ankr.com/eth_goerli"],wrappedNativeToken:"0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",explorerUrl:"https://goerli.etherscan.io",timestamp:"2022-12-28T14:10:09+00:00",feeTreasury:"0x3E8A61F0532BA2b58660606d61110cC9E90c4D29",priceFeeds:{CZK:"0xAE45DCb3eB59E27f05C170752B218C6174394Df8",JPY:"0x295b398c95cEB896aFA18F25d0c6431Fd17b1431"}},{chainName:"Arbitrum One",shortName:"arb1",testnet:!1,chainId:42161,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/42161/logo.svg",rpcUrls:["https://rpc.ankr.com/arbitrum"],wrappedNativeToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",explorerUrl:"https://arbiscan.io",timestamp:"2023-01-13T14:52:05+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2e0ced30d234",priceFeeds:{AUD:"0x9854e9a850e7c354c1de177ea953a6b1fba8fc22",CNY:"0xcc3370bde6afe51e1205a5038947b9836371eccb",EUR:"0xa14d53bc1f1c0f31b4aa3bd109344e5009051a84",CAD:"0xf6da27749484843c4f02f5ad1378cee723dd61d4",CHF:"0xe32AccC8c4eC03F6E75bd3621BfC9Fbb234E1FC3",GBP:"0x9c4424fd84c6661f97d8d6b3fc3c1aac2bedd137",JPY:"0x3dd6e51cb9cae717d5a8778cf79a04029f9cfdf8",KRW:"0x85bb02e0ae286600d1c68bb6ce22cc998d411916",SEK:"0xde89a55d04ded40a410877ab87d4f567ee66a1f0",SGD:"0xf0d38324d1f86a176ac727a4b0c43c9f9d9c5eb1"},tokenFeeds:{ETH:"0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612"},curveRouterAddress:"0x4c2af2df2a7e567b5155879720619ea06c5bb15d"},{chainName:"Optimism",shortName:"oeth",testnet:!1,chainId:10,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/10/logo.svg",rpcUrls:["https://mainnet.optimism.io"],wrappedNativeToken:"0x4200000000000000000000000000000000000006",explorerUrl:"https://optimistic.etherscan.io",timestamp:"2023-02-27T14:52:05+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2e0ced30d234",priceFeeds:{AUD:"0x39be70e93d2d285c9e71be7f70fc5a45a7777b14",EUR:"0x3626369857a10ccc6cc3a6e4f5c2f5984a519f20",GBP:"0x540d48c01f946e729174517e013ad0bdae5f08c0",JPY:"0x536944c3a71feb7c1e5c66ee37d1a148d8d8f619",INR:"0x5535e67d8f99c8ebe961e1fc1f6ddae96fec82c9"},tokenFeeds:{ETH:"0x13e3Ee699D1909E989722E753853AE30b17e08c5"},curveRouterAddress:"0x89287c32c2cac1c76227f6d300b2dbbab6b75c08"},{chainName:"Avalanche",shortName:"avax",testnet:!1,chainId:43114,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/43113/logo.svg",rpcUrls:["https://api.avax.network/ext/bc/C/rpc"],wrappedNativeToken:"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB",explorerUrl:"https://snowtrace.io",timestamp:"2023-01-13T14:52:05+00:00",feeTreasury:"0x25e22F3ceE59F34622f7DC9a2078B85f17BfBe95",priceFeeds:{BRL:"0x609dddb75518aa4af84ac228b62261ae68e52989",CHF:"0x3b37950485b450edf90cbb85d0cd27308af4ab9a",EUR:"0x192f2dba961bb0277520c082d6bfa87d5961333e",JPY:"0xf8b283ad4d969ecfd70005714dd5910160565b94",TRY:"0xa61bf273688ea095b5e4c11f1af5e763f7aeee91"},tokenFeeds:{AVAX:"0x0A77230d17318075983913bC2145DB16C7366156"}},{chainName:"Gnosis",shortName:"gno",testnet:!1,chainId:100,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/100/logo.svg",rpcUrls:["https://rpc.gnosis.gateway.fm"],wrappedNativeToken:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",explorerUrl:"https://gnosisscan.io",timestamp:"2023-07-27T14:52:05+00:00",feeTreasury:"0x775aaf73a50C25eEBd308BBb9C34C73D081B423b",priceFeeds:{CHF:"0xFb00261Af80ADb1629D3869E377ae1EEC7bE659F",EUR:"0xab70BCB260073d036d1660201e9d5405F5829b7a",JPY:"0x2AfB993C670C01e9dA1550c58e8039C1D8b8A317"},tokenFeeds:{GNO:"0x22441d81416430A54336aB28765abd31a792Ad37",DAI:"0x678df3415fc31947dA4324eC63212874be5a82f8"},curveRouterAddress:"0xe6358f6a45b502477e83cc1cda759f540e4459ee"},{chainName:"Polygon",shortName:"matic",testnet:!1,chainId:137,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",rpcUrls:["https://polygon-rpc.com"],wrappedNativeToken:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",explorerUrl:"https://polygonscan.com",timestamp:"2023-09-07T00:00:00+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2E0CeD30d234",priceFeeds:{AUD:"0x062Df9C4efd2030e243ffCc398b652e8b8F95C6f",CAD:"0xACA44ABb8B04D07D883202F99FA5E3c53ed57Fb5",CHF:"0xc76f762CedF0F78a439727861628E0fdfE1e70c2",CNY:"0x04bB437Aa63E098236FA47365f0268547f6EAB32",EUR:"0x73366Fe0AA0Ded304479862808e02506FE556a98",GBP:"0x099a2540848573e94fb1Ca0Fa420b00acbBc845a",ILS:"0x8d5eB34C509261533235b91350d359EdcB969D33",INR:"0xDA0F8Df6F5dB15b346f4B8D1156722027E194E60",JPY:"0xD647a6fC9BC6402301583C91decC5989d8Bc382D",KRW:"0x24B820870F726dA9B0D83B0B28a93885061dbF50",MXN:"0x171b16562EA3476F5C61d1b8dad031DbA0768545",NZD:"0xa302a0B8a499fD0f00449df0a490DedE21105955",PHP:"0x218231089Bebb2A31970c3b77E96eCfb3BA006D1",PLN:"0xB34BCE11040702f71c11529D00179B2959BcE6C0",SEK:"0xbd92B4919ae82be8473859295dEF0e778A626302",SGD:"0x8CE3cAc0E6635ce04783709ca3CC4F5fc5304299",THB:"0x5164Ad28fb12a5e55946090Ec3eE1B748AFb3785",TRY:"0xd78325DcA0F90F0FFe53cCeA1B02Bb12E1bf8FdB"},tokenFeeds:{MATIC:"0xAB594600376Ec9fD91F8e885dADF0CE036862dE0"},curveRouterAddress:"0x2a426b3Bb4fa87488387545f15D01d81352732F9"}]},s={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},routers:[{chainId:1,address:"0x4cafd841df0df6da5739f729491887d64ad2794c",timestamp:"2022-12-30T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:1,address:"0x061888246A29fEB9bb3f168CD8589B3Cf4115668",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:5,address:"0x8412D3c11aa605EbaF14D0b6BC7705ab45143Ee8",timestamp:"2022-12-23T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:10,address:"0xfbA75752D73d3Fb3aA13e7BC7cfD142E73E78a8A",timestamp:"2023-02-27T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:10,address:"0x408EB3F5A578b3eEcFe2c0cD58988fAb306885b4",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:42161,address:"0x334264f4fbb56a84f80df722ba765d210f0cf555",timestamp:"2023-02-23T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:42161,address:"0x408EB3F5A578b3eEcFe2c0cD58988fAb306885b4",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:100,address:"0x448fabd2d16bc48ecdbe68890414de7a1b6348fd",timestamp:"2023-07-27T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:100,address:"0x5faD44Dc5B63f1717523c340de357ef399FeA0F2",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:137,address:"0x8866DAFa2762346c85098C5b2201fA7CB2dA6100",timestamp:"2023-09-07T00:00:00+00:00",version:"0.2",fee:"0.002"}]},o={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},faucets:[{chainId:5,token:"0x33ca3889bb0032e9c3794b608a242d27e7293353",address:"0xd2bc1d97793763b7262987a67f1945169c763389"},{chainId:5,token:"0xe5768E2dDEc1E50Ac2672a2d75D63d36A8Ec88d9",address:"0x5A3380C7d6A05AF3Ce68C939142658C35Efc066d"},{chainId:5,token:"0xeB87E5d9c773d3E802989295147564985B5B358C",address:"0xF47661BCe78194b44675547873ef58Ca8Db9b145"}]},i=[{inputs:[{internalType:"address",name:"_feeTreasury",type:"address"},{internalType:"uint256",name:"_baseFeeBps",type:"uint256"},{internalType:"string",name:"_version",type:"string"},{internalType:"address",name:"_uniswapRouter",type:"address"},{internalType:"address",name:"_curveRouter",type:"address"},{internalType:"address",name:"_wrappedNativeToken",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"priceFeed",type:"address"},{indexed:!1,internalType:"int256",name:"exchangeRate",type:"int256"}],name:"Convert",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fees",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"memo",type:"bytes32"}],name:"Payment",type:"event"},{inputs:[],name:"MAX_FEE_BPS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TOKEN",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseFeeBps",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"feeBps",type:"uint256"}],name:"calculateFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[],name:"curveRouter",outputs:[{internalType:"contract ICurveRouter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"exchangeRate",outputs:[{internalType:"uint256",name:"converted",type:"uint256"},{internalType:"address[2]",name:"priceFeedsUsed",type:"address[2]"},{internalType:"int256[2]",name:"prices",type:"int256[2]"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeTreasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"address[9]",name:"route",type:"address[9]"},{internalType:"uint256[3][4]",name:"swapParams",type:"uint256[3][4]"},{internalType:"address[4]",name:"factoryAddresses",type:"address[4]"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"},{internalType:"bool",name:"returnRemainder",type:"bool"}],internalType:"struct HiroRouterV1.HiroCurveParams",name:"params",type:"tuple"}],name:"payWithCurve",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"}],name:"payWithToken",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"},{internalType:"bool",name:"returnRemainder",type:"bool"},{internalType:"enum HiroRouterV1.SwapType",name:"swapType",type:"uint8"}],internalType:"struct HiroRouterV1.HiroUniswapParams",name:"params",type:"tuple"}],name:"payWithUniswap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"sweep",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"uniswapRouter",outputs:[{internalType:"contract ISwapRouter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"wrappedNativeToken",outputs:[{internalType:"contract IWETH9",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],r={.1:[{inputs:[{internalType:"address",name:"_feeTreasury",type:"address"},{internalType:"uint256",name:"_baseFeeDivisor",type:"uint256"},{internalType:"string",name:"_version",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"priceFeed",type:"address"},{indexed:!1,internalType:"int256",name:"exchangeRate",type:"int256"}],name:"Convert",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fees",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"memo",type:"bytes32"}],name:"Payment",type:"event"},{inputs:[{internalType:"address[]",name:"_priceFeeds",type:"address[]"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"exchangeRate",outputs:[{internalType:"uint256",name:"converted",type:"uint256"},{internalType:"address",name:"priceFeed",type:"address"},{internalType:"int256",name:"price",type:"int256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_memo",type:"bytes32"},{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address[]",name:"_priceFeeds",type:"address[]"},{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_receiver",type:"address"},{internalType:"address",name:"_extraFeeReceiver",type:"address"},{internalType:"uint256",name:"_extraFeeDivisor",type:"uint256"}],name:"payWithToken",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],.2:i,test:i};function d(e,t){return e.major<t.major?-1:e.major>t.major?1:e.minor<t.minor?-1:e.minor>t.minor?1:e.patch<t.patch?-1:e.patch>t.patch?1:0}function c(e,t){var a=e.reduce((function(e,t){return e[t.chainId]||(e[t.chainId]={}),e[t.chainId][t.address]=t,e}),{}),n=t.reduce((function(e,t){var n,s,o=null==(n=a[t.chainId])?void 0:n[t.address];if(o){var i=Object.keys(t).filter((function(e){return"address"!==e&&"chainId"!==e})).filter((function(e){return!((a=t[e])===(n=o[e])||typeof a==typeof n&&Array.isArray(a)&&Array.isArray(n)&&a.every((function(e,t){return n[t]===e})));var a,n}));i.length>0&&(e.changed[t.chainId]||(e.changed[t.chainId]={}),e.changed[t.chainId][t.address]=i)}else e.added.push(t);return e.index[t.chainId]?e.index[t.chainId][t.address]=!0:e.index[t.chainId]=((s={})[t.address]=!0,s),e}),{added:[],changed:{},index:{}}),s=e.reduce((function(e,t){return n.index[t.chainId]&&n.index[t.chainId][t.address]||e.push(t),e}),[]);return{added:n.added,changed:n.changed,removed:s}}function p(e){return s.routers.filter((function(t){return t.chainId===e}))}(e=exports.TokenListTagNames||(exports.TokenListTagNames={})).MAINNET="Mainnet",e.OPTIMISM="Optimism",e.ARBITRUM="Arbitrum",e.AVALANCHE="Avalanche",e.TESTNET="TESTNET",e.STABLECOIN="Stablecoin",e.USD="USD",e.EUR="EUR",e.TOP_10="Top10",e.NATIVE_TOKEN="Native Token",(t=exports.VersionUpgrade||(exports.VersionUpgrade={}))[t.NONE=0]="NONE",t[t.PATCH=1]="PATCH",t[t.MINOR=2]="MINOR",t[t.MAJOR=3]="MAJOR",exports.CURVE_ROUTER_ABI=[{name:"TokenExchange",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"receiver",type:"address",indexed:!0},{name:"pool",type:"address",indexed:!0},{name:"token_sold",type:"address",indexed:!1},{name:"token_bought",type:"address",indexed:!1},{name:"amount_sold",type:"uint256",indexed:!1},{name:"amount_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"ExchangeMultiple",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"receiver",type:"address",indexed:!0},{name:"route",type:"address[9]",indexed:!1},{name:"swap_params",type:"uint256[3][4]",indexed:!1},{name:"pools",type:"address[4]",indexed:!1},{name:"amount_sold",type:"uint256",indexed:!1},{name:"amount_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_address_provider",type:"address"},{name:"_calculator",type:"address"},{name:"_weth",type:"address"}],outputs:[]},{stateMutability:"payable",type:"fallback"},{stateMutability:"payable",type:"function",name:"exchange_with_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_with_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_pools",type:"address[4]"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_pools",type:"address[4]"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"address"},{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_exclude_pools",type:"address[8]"}],outputs:[{name:"",type:"address"},{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_amount",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_input_amount",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_amounts",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amounts",type:"uint256[100]"}],outputs:[{name:"",type:"uint256[100]"}]},{stateMutability:"view",type:"function",name:"get_exchange_multiple_amount",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_multiple_amount",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_pools",type:"address[4]"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_calculator",inputs:[{name:"_pool",type:"address"}],outputs:[{name:"",type:"address"}]},{stateMutability:"nonpayable",type:"function",name:"update_registry_address",inputs:[],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_calculator",inputs:[{name:"_pool",type:"address"},{name:"_calculator",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_default_calculator",inputs:[{name:"_calculator",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"claim_balance",inputs:[{name:"_token",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_killed",inputs:[{name:"_is_killed",type:"bool"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"view",type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"factory_registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"crypto_registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"default_calculator",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"is_killed",inputs:[],outputs:[{name:"",type:"bool"}]}],exports.HIRO_ROUTER_ABIS=r,exports.chainlist=n,exports.diffTokenLists=c,exports.getChain=function(e){return n.chains.find((function(t){return t.chainId===e}))},exports.getFaucetAddress=function(e){return o.faucets.find((function(t){return t.token.toLowerCase()===e.address.toLowerCase()&&t.chainId===e.chainId}))},exports.getLatestRouter=function(e){var t=p(e).sort((function(e,t){return Date.parse(e.timestamp)-Date.parse(t.timestamp)}));return t[t.length-1]},exports.getRouter=function(e,t){return s.routers.find((function(a){return a.chainId===e&&a.version===t}))},exports.getRouters=p,exports.getShortNames=function(){return n.chains.map((function(e){return e.shortName}))},exports.getTokenByAddress=function(e,t){var n;return null!=(n=a.tokens.find((function(a){return a.address.toLowerCase()===e.toLowerCase()&&(!t||a.chainId===t)})))?n:null},exports.getTokenBySymbol=function(e,t){var n;return null!=(n=a.tokens.find((function(a){return a.symbol===e&&(!t||a.chainId===t)})))?n:null},exports.getTokens=function(e){return a.tokens.filter((function(t){return t.chainId===e}))},exports.getVersionUpgrade=function(e,t){return t.major>e.major?exports.VersionUpgrade.MAJOR:t.major<e.major?exports.VersionUpgrade.NONE:t.minor>e.minor?exports.VersionUpgrade.MINOR:t.minor<e.minor?exports.VersionUpgrade.NONE:t.patch>e.patch?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.isVersionUpdate=function(e,t){return d(e,t)<0},exports.minVersionBump=function(e,t){var a=c(e,t);return a.removed.length>0?exports.VersionUpgrade.MAJOR:a.added.length>0?exports.VersionUpgrade.MINOR:Object.keys(a.changed).length>0?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.nextVersion=function(e,t){switch(t){case exports.VersionUpgrade.NONE:return e;case exports.VersionUpgrade.MAJOR:return{major:e.major+1,minor:0,patch:0};case exports.VersionUpgrade.MINOR:return{major:e.major,minor:e.minor+1,patch:0};case exports.VersionUpgrade.PATCH:return{major:e.major,minor:e.minor,patch:e.patch+1}}},exports.routerlist=s,exports.tokenlist=a,exports.tokenschema=a,exports.versionComparator=d;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t,a={name:"Default",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo.png",keywords:[],version:{major:0,minor:0,patch:1},tokens:[{chainId:1,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Mainnet","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:10,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Optimism","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:42161,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Arbitrum","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:8453,coinGeckoId:"ethereum",name:"Ether",symbol:"ETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",decimals:18,tags:["Base","Native Token","Top10"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:1,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Mainnet","Native Token"],address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},{chainId:10,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Optimism","Native Token"],address:"0x4200000000000000000000000000000000000006"},{chainId:42161,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Arbitrum","Native Token"],address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},{chainId:8453,coinGeckoId:"weth",name:"Wrapped Ether",symbol:"WETH",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",decimals:18,tags:["Base","Native Token"],address:"0x4200000000000000000000000000000000000006"},{chainId:1,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0xdac17f958d2ee523a2206206994597c13d831ec7"},{chainId:10,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x94b008aa00579c1307b0ef2c499ad98a8ce58e58"},{chainId:42161,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"},{chainId:1,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{chainId:10,coinGeckoId:"usd-coin",name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x7f5c764cbc14f9669b88837ca1490cca17c31607"},{chainId:10,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Optimism","Stablecoin","Top10","USD"],address:"0x0b2c639c533813f4aa9d7837caf62653d097ff85"},{chainId:8453,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Base","Stablecoin","Top10","USD"],address:"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},{chainId:42161,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},{chainId:42161,coinGeckoId:"usd-coin",name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"},{chainId:1,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Mainnet","Stablecoin","Top10","USD"],address:"0x6b175474e89094c44da98b954eedeac495271d0f"},{chainId:10,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Optimism","Stablecoin","Top10","USD"],address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"},{chainId:42161,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Arbitrum","Stablecoin","Top10","USD"],address:"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"},{chainId:1,coinGeckoId:"crvusd",name:"crvUSD",symbol:"crvUSD",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/crvUSD.svg",decimals:18,tags:["Mainnet","Stablecoin","USD"],address:"0xf939e0a03fb07f59a73314e73794be0e57ac1b4e"},{chainId:1,coinGeckoId:"monerium-eur-money",name:"EURe",symbol:"EURe",currency:"EUR",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg",decimals:18,tags:["Mainnet","Stablecoin","EUR"],address:"0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f"},{chainId:5,name:"XUSD",symbol:"XUSD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:18,tags:["TESTNET"],address:"0x33ca3889bb0032e9c3794b608a242d27e7293353"},{chainId:5,name:"USDC.test",symbol:"USDC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:18,tags:["TESTNET"],address:"0xe5768E2dDEc1E50Ac2672a2d75D63d36A8Ec88d9"},{chainId:5,name:"USDT.test",symbol:"USDT",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:18,tags:["TESTNET"],address:"0xeB87E5d9c773d3E802989295147564985B5B358C"},{chainId:43114,coinGeckoId:"dai",address:"0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",decimals:18,name:"Dai Stablecoin",symbol:"DAI.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg"},{chainId:43114,coinGeckoId:"tether",address:"0xc7198437980c041c805A1EDcbA50c1Ce5db95118",decimals:6,name:"Tether - Bridged",symbol:"USDT.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:43114,coinGeckoId:"usd-coin",address:"0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",decimals:6,name:"USD Coin - Bridged",symbol:"USDC.e",currency:"USD",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:43114,coinGeckoId:"magic-internet-money",address:"0x130966628846BFd36ff31a822705796e8cb8C18D",decimals:18,name:"Magic Internet Money",symbol:"MIM",tags:["Avalanche","Stablecoins"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/MIM.svg"},{chainId:43114,coinGeckoId:"usd-coin",address:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",decimals:6,name:"USD Coin",symbol:"USDC",currency:"USD",tags:["Avalanche","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:43114,coinGeckoId:"tether",address:"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",decimals:6,name:"Tether",symbol:"USDT",currency:"USD",tags:["Avalanche","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:100,coinGeckoId:"tether",address:"0x4ECaBa5870353805a9F068101A40E0f32ed605C6",decimals:6,name:"Tether",symbol:"USDT",currency:"USD",tags:["Gnosis","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg"},{chainId:100,coinGeckoId:"usd-coin",address:"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",decimals:6,name:"USD Coin",symbol:"USDC",currency:"USD",tags:["Gnosis","Stablecoin","Top10"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg"},{chainId:100,coinGeckoId:"xdai",address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",decimals:18,name:"xDAI",symbol:"xDAI",currency:"USD",tags:["Gnosis","Stablecoin","Native Token"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/xDAI.svg"},{chainId:100,coinGeckoId:"wrapped-xdai",address:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",decimals:18,name:"wxDAI",symbol:"wxDAI",currency:"USD",tags:["Gnosis","Stablecoin","Native Token"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/wxDAI.svg"},{chainId:100,coinGeckoId:"monerium-eur-money",address:"0xcB444e90D8198415266c6a2724b7900fb12FC56E",decimals:18,name:"EURe",symbol:"EURe",currency:"EUR",tags:["Gnosis","Stablecoin"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg"},{chainId:137,coinGeckoId:"matic-network",name:"MATIC",symbol:"MATIC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",decimals:18,tags:["Polygon","Native Token"],address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},{chainId:137,coinGeckoId:"matic-network",name:"Wrapped MATIC",symbol:"WMATIC",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",decimals:18,tags:["Polygon","Native Token"],address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},{chainId:137,coinGeckoId:"tether",name:"Tether",symbol:"USDT",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDT.svg",decimals:6,tags:["Polygon","Stablecoin","Top10","USD"],address:"0xc2132D05D31c914a87C6611C10748AEb04B58e8F"},{chainId:137,coinGeckoId:"usd-coin",name:"USD Coin",symbol:"USDC",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",decimals:6,tags:["Polygon","Stablecoin","Top10","USD"],address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"},{chainId:137,coinGeckoId:"dai",name:"DAI",symbol:"DAI",currency:"USD",logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/DAI.svg",decimals:18,tags:["Polygon","Stablecoin","Top10","USD"],address:"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"},{chainId:137,coinGeckoId:"monerium-eur-money",address:"0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",decimals:18,name:"EURe",symbol:"EURe",currency:"EUR",tags:["Polygon","Stablecoin"],logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/EURe.svg"}],timestamp:"2021-09-07T00:00:00+00:00"},n={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},chains:[{chainName:"Ethereum",shortName:"eth",testnet:!1,chainId:1,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/1/logo.svg",rpcUrls:["https://rpc.ankr.com/eth"],wrappedNativeToken:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",explorerUrl:"https://etherscan.io",timestamp:"2022-12-29T18:52:20+00:00",feeTreasury:"0x9C48d180e4eEE0dA2A899EE1E4c533cA5e92db77",priceFeeds:{AUD:"0x77f9710e7d0a19669a13c055f62cd80d313df022",CAD:"0xa34317db73e77d453b1b8d04550c44d10e981c8e",CHF:"0x449d117117838ffa61263b61da6301aa2a88b13a",EUR:"0xb49f677943bc038e9857d61e7d053caa2c1734c1",GBP:"0x5c0ab2d9b5a7ed9f470386e82bb36a3613cdd4b5",JPY:"0xbce206cae7f0ec07b545edde332a47c2f75bbeb3",CNY:"0xef8a4af35cd47424672e3c590abd37fbb7a7759a",KRW:"0x01435677fb11763550905594a16b645847c1d0f3",NZD:"0x3977cfc9e4f29c184d4675f4eb8e0013236e5f3e",SGD:"0xe25277ff4bbf9081c75ab0eb13b4a13a721f3e13",TRY:"0xb09fc5fd3f11cf9eb5e1c5dba43114e3c9f477b5"},tokenFeeds:{ETH:"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"},curveRouterAddress:"0x99a58482BD75cbab83b27EC03CA68fF489b5788f"},{chainName:"Ethereum Goerli",shortName:"gor",testnet:!0,chainId:5,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/5/logo.svg",rpcUrls:["https://rpc.ankr.com/eth_goerli"],wrappedNativeToken:"0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",explorerUrl:"https://goerli.etherscan.io",timestamp:"2022-12-28T14:10:09+00:00",feeTreasury:"0x3E8A61F0532BA2b58660606d61110cC9E90c4D29",priceFeeds:{CZK:"0xAE45DCb3eB59E27f05C170752B218C6174394Df8",JPY:"0x295b398c95cEB896aFA18F25d0c6431Fd17b1431"}},{chainName:"Arbitrum One",shortName:"arb1",testnet:!1,chainId:42161,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/42161/logo.svg",rpcUrls:["https://rpc.ankr.com/arbitrum"],wrappedNativeToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",explorerUrl:"https://arbiscan.io",timestamp:"2023-01-13T14:52:05+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2e0ced30d234",priceFeeds:{AUD:"0x9854e9a850e7c354c1de177ea953a6b1fba8fc22",CNY:"0xcc3370bde6afe51e1205a5038947b9836371eccb",EUR:"0xa14d53bc1f1c0f31b4aa3bd109344e5009051a84",CAD:"0xf6da27749484843c4f02f5ad1378cee723dd61d4",CHF:"0xe32AccC8c4eC03F6E75bd3621BfC9Fbb234E1FC3",GBP:"0x9c4424fd84c6661f97d8d6b3fc3c1aac2bedd137",JPY:"0x3dd6e51cb9cae717d5a8778cf79a04029f9cfdf8",KRW:"0x85bb02e0ae286600d1c68bb6ce22cc998d411916",SEK:"0xde89a55d04ded40a410877ab87d4f567ee66a1f0",SGD:"0xf0d38324d1f86a176ac727a4b0c43c9f9d9c5eb1"},tokenFeeds:{ETH:"0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612"},curveRouterAddress:"0x4c2af2df2a7e567b5155879720619ea06c5bb15d"},{chainName:"Optimism",shortName:"oeth",testnet:!1,chainId:10,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/10/logo.svg",rpcUrls:["https://mainnet.optimism.io"],wrappedNativeToken:"0x4200000000000000000000000000000000000006",explorerUrl:"https://optimistic.etherscan.io",timestamp:"2023-02-27T14:52:05+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2e0ced30d234",priceFeeds:{AUD:"0x39be70e93d2d285c9e71be7f70fc5a45a7777b14",EUR:"0x3626369857a10ccc6cc3a6e4f5c2f5984a519f20",GBP:"0x540d48c01f946e729174517e013ad0bdae5f08c0",JPY:"0x536944c3a71feb7c1e5c66ee37d1a148d8d8f619",INR:"0x5535e67d8f99c8ebe961e1fc1f6ddae96fec82c9"},tokenFeeds:{ETH:"0x13e3Ee699D1909E989722E753853AE30b17e08c5"},curveRouterAddress:"0x89287c32c2cac1c76227f6d300b2dbbab6b75c08"},{chainName:"Avalanche",shortName:"avax",testnet:!1,chainId:43114,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/43113/logo.svg",rpcUrls:["https://api.avax.network/ext/bc/C/rpc"],wrappedNativeToken:"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB",explorerUrl:"https://snowtrace.io",timestamp:"2023-01-13T14:52:05+00:00",feeTreasury:"0x25e22F3ceE59F34622f7DC9a2078B85f17BfBe95",priceFeeds:{BRL:"0x609dddb75518aa4af84ac228b62261ae68e52989",CHF:"0x3b37950485b450edf90cbb85d0cd27308af4ab9a",EUR:"0x192f2dba961bb0277520c082d6bfa87d5961333e",JPY:"0xf8b283ad4d969ecfd70005714dd5910160565b94",TRY:"0xa61bf273688ea095b5e4c11f1af5e763f7aeee91"},tokenFeeds:{AVAX:"0x0A77230d17318075983913bC2145DB16C7366156"}},{chainName:"Gnosis",shortName:"gno",testnet:!1,chainId:100,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/100/logo.svg",rpcUrls:["https://rpc.gnosis.gateway.fm"],wrappedNativeToken:"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",explorerUrl:"https://gnosisscan.io",timestamp:"2023-07-27T14:52:05+00:00",feeTreasury:"0x775aaf73a50C25eEBd308BBb9C34C73D081B423b",priceFeeds:{CHF:"0xFb00261Af80ADb1629D3869E377ae1EEC7bE659F",EUR:"0xab70BCB260073d036d1660201e9d5405F5829b7a",JPY:"0x2AfB993C670C01e9dA1550c58e8039C1D8b8A317"},tokenFeeds:{GNO:"0x22441d81416430A54336aB28765abd31a792Ad37",DAI:"0x678df3415fc31947dA4324eC63212874be5a82f8"},curveRouterAddress:"0xe6358f6a45b502477e83cc1cda759f540e4459ee"},{chainName:"Base",shortName:"base",testnet:!1,chainId:8453,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/8453/logo.png",rpcUrls:["https://mainnet.base.org"],wrappedNativeToken:"0x4200000000000000000000000000000000000006",explorerUrl:"https://basescan.org",timestamp:"2024-06-17T14:52:05+00:00",feeTreasury:"0x46959a8a332eca1a05Bd4F18115b8F2E1C2F2f05",priceFeeds:{BRL:"0x0b0E64c05083FdF9ED7C5D3d8262c4216eFc9394",EUR:"0xc91D87E81faB8f93699ECf7Ee9B44D11e1D53F0F"},tokenFeeds:{ETH:"0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70"},curveRouterAddress:"0x0000000000000000000000000000000000000000"},{chainName:"Polygon",shortName:"matic",testnet:!1,chainId:137,logoUri:"https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/137/logo.svg",rpcUrls:["https://polygon-rpc.com"],wrappedNativeToken:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",explorerUrl:"https://polygonscan.com",timestamp:"2023-09-07T00:00:00+00:00",feeTreasury:"0x5f0947253a8218894af13438ac2e2E0CeD30d234",priceFeeds:{AUD:"0x062Df9C4efd2030e243ffCc398b652e8b8F95C6f",CAD:"0xACA44ABb8B04D07D883202F99FA5E3c53ed57Fb5",CHF:"0xc76f762CedF0F78a439727861628E0fdfE1e70c2",CNY:"0x04bB437Aa63E098236FA47365f0268547f6EAB32",EUR:"0x73366Fe0AA0Ded304479862808e02506FE556a98",GBP:"0x099a2540848573e94fb1Ca0Fa420b00acbBc845a",ILS:"0x8d5eB34C509261533235b91350d359EdcB969D33",INR:"0xDA0F8Df6F5dB15b346f4B8D1156722027E194E60",JPY:"0xD647a6fC9BC6402301583C91decC5989d8Bc382D",KRW:"0x24B820870F726dA9B0D83B0B28a93885061dbF50",MXN:"0x171b16562EA3476F5C61d1b8dad031DbA0768545",NZD:"0xa302a0B8a499fD0f00449df0a490DedE21105955",PHP:"0x218231089Bebb2A31970c3b77E96eCfb3BA006D1",PLN:"0xB34BCE11040702f71c11529D00179B2959BcE6C0",SEK:"0xbd92B4919ae82be8473859295dEF0e778A626302",SGD:"0x8CE3cAc0E6635ce04783709ca3CC4F5fc5304299",THB:"0x5164Ad28fb12a5e55946090Ec3eE1B748AFb3785",TRY:"0xd78325DcA0F90F0FFe53cCeA1B02Bb12E1bf8FdB"},tokenFeeds:{MATIC:"0xAB594600376Ec9fD91F8e885dADF0CE036862dE0"},curveRouterAddress:"0x2a426b3Bb4fa87488387545f15D01d81352732F9"}]},s={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},routers:[{chainId:1,address:"0x4cafd841df0df6da5739f729491887d64ad2794c",timestamp:"2022-12-30T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:1,address:"0x061888246A29fEB9bb3f168CD8589B3Cf4115668",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:5,address:"0x8412D3c11aa605EbaF14D0b6BC7705ab45143Ee8",timestamp:"2022-12-23T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:10,address:"0xfbA75752D73d3Fb3aA13e7BC7cfD142E73E78a8A",timestamp:"2023-02-27T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:10,address:"0x408EB3F5A578b3eEcFe2c0cD58988fAb306885b4",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:42161,address:"0x334264f4fbb56a84f80df722ba765d210f0cf555",timestamp:"2023-02-23T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:42161,address:"0x408EB3F5A578b3eEcFe2c0cD58988fAb306885b4",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:100,address:"0x448fabd2d16bc48ecdbe68890414de7a1b6348fd",timestamp:"2023-07-27T00:00:00+00:00",version:"0.1",fee:"0.002"},{chainId:100,address:"0x5faD44Dc5B63f1717523c340de357ef399FeA0F2",timestamp:"2023-09-01T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:137,address:"0x8866DAFa2762346c85098C5b2201fA7CB2dA6100",timestamp:"2023-09-07T00:00:00+00:00",version:"0.2",fee:"0.002"},{chainId:8453,address:"0x2BaE9Bb53BCe89c760dBfA55D854D43ab96EE19f",timestamp:"2024-06-17T15:50:00+00:00",version:"0.2",fee:"0.002"},{chainId:8453,address:"0x775397bf2f68af5aba4029260c1f44770b77d513",timestamp:"2024-06-18T17:50:00+00:00",version:"0.3",fee:"0.002"}]},o={name:"Default",logoUri:"",keywords:[],version:{major:0,minor:0,patch:1},faucets:[{chainId:5,token:"0x33ca3889bb0032e9c3794b608a242d27e7293353",address:"0xd2bc1d97793763b7262987a67f1945169c763389"},{chainId:5,token:"0xe5768E2dDEc1E50Ac2672a2d75D63d36A8Ec88d9",address:"0x5A3380C7d6A05AF3Ce68C939142658C35Efc066d"},{chainId:5,token:"0xeB87E5d9c773d3E802989295147564985B5B358C",address:"0xF47661BCe78194b44675547873ef58Ca8Db9b145"}]},i=[{inputs:[{internalType:"address",name:"_feeTreasury",type:"address"},{internalType:"uint256",name:"_baseFeeBps",type:"uint256"},{internalType:"string",name:"_version",type:"string"},{internalType:"address",name:"_uniswapRouter",type:"address"},{internalType:"address",name:"_curveRouter",type:"address"},{internalType:"address",name:"_wrappedNativeToken",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"priceFeed",type:"address"},{indexed:!1,internalType:"int256",name:"exchangeRate",type:"int256"}],name:"Convert",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fees",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"memo",type:"bytes32"}],name:"Payment",type:"event"},{inputs:[],name:"MAX_FEE_BPS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TOKEN",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseFeeBps",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"feeBps",type:"uint256"}],name:"calculateFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[],name:"curveRouter",outputs:[{internalType:"contract ICurveRouter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"exchangeRate",outputs:[{internalType:"uint256",name:"converted",type:"uint256"},{internalType:"address[2]",name:"priceFeedsUsed",type:"address[2]"},{internalType:"int256[2]",name:"prices",type:"int256[2]"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeTreasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"address[9]",name:"route",type:"address[9]"},{internalType:"uint256[3][4]",name:"swapParams",type:"uint256[3][4]"},{internalType:"address[4]",name:"factoryAddresses",type:"address[4]"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"},{internalType:"bool",name:"returnRemainder",type:"bool"}],internalType:"struct HiroRouterV1.HiroCurveParams",name:"params",type:"tuple"}],name:"payWithCurve",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"}],name:"payWithToken",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"bytes32",name:"memo",type:"bytes32"},{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address[2]",name:"priceFeeds",type:"address[2]"},{internalType:"address",name:"extraFeeReceiver",type:"address"},{internalType:"uint256",name:"extraFeeBps",type:"uint256"},{internalType:"bool",name:"returnRemainder",type:"bool"},{internalType:"enum HiroRouterV1.SwapType",name:"swapType",type:"uint8"}],internalType:"struct HiroRouterV1.HiroUniswapParams",name:"params",type:"tuple"}],name:"payWithUniswap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"sweep",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"uniswapRouter",outputs:[{internalType:"contract ISwapRouter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"wrappedNativeToken",outputs:[{internalType:"contract IWETH9",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],d={.1:[{inputs:[{internalType:"address",name:"_feeTreasury",type:"address"},{internalType:"uint256",name:"_baseFeeDivisor",type:"uint256"},{internalType:"string",name:"_version",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"priceFeed",type:"address"},{indexed:!1,internalType:"int256",name:"exchangeRate",type:"int256"}],name:"Convert",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fees",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"memo",type:"bytes32"}],name:"Payment",type:"event"},{inputs:[{internalType:"address[]",name:"_priceFeeds",type:"address[]"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"exchangeRate",outputs:[{internalType:"uint256",name:"converted",type:"uint256"},{internalType:"address",name:"priceFeed",type:"address"},{internalType:"int256",name:"price",type:"int256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_memo",type:"bytes32"},{internalType:"uint256",name:"_amount",type:"uint256"},{internalType:"address[]",name:"_priceFeeds",type:"address[]"},{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_receiver",type:"address"},{internalType:"address",name:"_extraFeeReceiver",type:"address"},{internalType:"uint256",name:"_extraFeeDivisor",type:"uint256"}],name:"payWithToken",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],.2:i,test:i};function r(e,t){return e.major<t.major?-1:e.major>t.major?1:e.minor<t.minor?-1:e.minor>t.minor?1:e.patch<t.patch?-1:e.patch>t.patch?1:0}function c(e,t){var a=e.reduce((function(e,t){return e[t.chainId]||(e[t.chainId]={}),e[t.chainId][t.address]=t,e}),{}),n=t.reduce((function(e,t){var n,s,o=null==(n=a[t.chainId])?void 0:n[t.address];if(o){var i=Object.keys(t).filter((function(e){return"address"!==e&&"chainId"!==e})).filter((function(e){return!((a=t[e])===(n=o[e])||typeof a==typeof n&&Array.isArray(a)&&Array.isArray(n)&&a.every((function(e,t){return n[t]===e})));var a,n}));i.length>0&&(e.changed[t.chainId]||(e.changed[t.chainId]={}),e.changed[t.chainId][t.address]=i)}else e.added.push(t);return e.index[t.chainId]?e.index[t.chainId][t.address]=!0:e.index[t.chainId]=((s={})[t.address]=!0,s),e}),{added:[],changed:{},index:{}}),s=e.reduce((function(e,t){return n.index[t.chainId]&&n.index[t.chainId][t.address]||e.push(t),e}),[]);return{added:n.added,changed:n.changed,removed:s}}function p(e){return s.routers.filter((function(t){return t.chainId===e}))}(e=exports.TokenListTagNames||(exports.TokenListTagNames={})).MAINNET="Mainnet",e.OPTIMISM="Optimism",e.ARBITRUM="Arbitrum",e.AVALANCHE="Avalanche",e.BASE="Base",e.TESTNET="TESTNET",e.STABLECOIN="Stablecoin",e.USD="USD",e.EUR="EUR",e.TOP_10="Top10",e.NATIVE_TOKEN="Native Token",(t=exports.VersionUpgrade||(exports.VersionUpgrade={}))[t.NONE=0]="NONE",t[t.PATCH=1]="PATCH",t[t.MINOR=2]="MINOR",t[t.MAJOR=3]="MAJOR",exports.CURVE_ROUTER_ABI=[{name:"TokenExchange",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"receiver",type:"address",indexed:!0},{name:"pool",type:"address",indexed:!0},{name:"token_sold",type:"address",indexed:!1},{name:"token_bought",type:"address",indexed:!1},{name:"amount_sold",type:"uint256",indexed:!1},{name:"amount_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{name:"ExchangeMultiple",inputs:[{name:"buyer",type:"address",indexed:!0},{name:"receiver",type:"address",indexed:!0},{name:"route",type:"address[9]",indexed:!1},{name:"swap_params",type:"uint256[3][4]",indexed:!1},{name:"pools",type:"address[4]",indexed:!1},{name:"amount_sold",type:"uint256",indexed:!1},{name:"amount_bought",type:"uint256",indexed:!1}],anonymous:!1,type:"event"},{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_address_provider",type:"address"},{name:"_calculator",type:"address"},{name:"_weth",type:"address"}],outputs:[]},{stateMutability:"payable",type:"fallback"},{stateMutability:"payable",type:"function",name:"exchange_with_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_with_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_pools",type:"address[4]"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"payable",type:"function",name:"exchange_multiple",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_expected",type:"uint256"},{name:"_pools",type:"address[4]"},{name:"_receiver",type:"address"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"address"},{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_best_rate",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"},{name:"_exclude_pools",type:"address[8]"}],outputs:[{name:"",type:"address"},{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_amount",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_input_amount",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_amounts",inputs:[{name:"_pool",type:"address"},{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amounts",type:"uint256[100]"}],outputs:[{name:"",type:"uint256[100]"}]},{stateMutability:"view",type:"function",name:"get_exchange_multiple_amount",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_exchange_multiple_amount",inputs:[{name:"_route",type:"address[9]"},{name:"_swap_params",type:"uint256[3][4]"},{name:"_amount",type:"uint256"},{name:"_pools",type:"address[4]"}],outputs:[{name:"",type:"uint256"}]},{stateMutability:"view",type:"function",name:"get_calculator",inputs:[{name:"_pool",type:"address"}],outputs:[{name:"",type:"address"}]},{stateMutability:"nonpayable",type:"function",name:"update_registry_address",inputs:[],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_calculator",inputs:[{name:"_pool",type:"address"},{name:"_calculator",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_default_calculator",inputs:[{name:"_calculator",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"claim_balance",inputs:[{name:"_token",type:"address"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"nonpayable",type:"function",name:"set_killed",inputs:[{name:"_is_killed",type:"bool"}],outputs:[{name:"",type:"bool"}]},{stateMutability:"view",type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"factory_registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"crypto_registry",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"default_calculator",inputs:[],outputs:[{name:"",type:"address"}]},{stateMutability:"view",type:"function",name:"is_killed",inputs:[],outputs:[{name:"",type:"bool"}]}],exports.HIRO_ROUTER_ABIS=d,exports.chainlist=n,exports.diffTokenLists=c,exports.getChain=function(e){return n.chains.find((function(t){return t.chainId===e}))},exports.getFaucetAddress=function(e){return o.faucets.find((function(t){return t.token.toLowerCase()===e.address.toLowerCase()&&t.chainId===e.chainId}))},exports.getLatestRouter=function(e){var t=p(e).sort((function(e,t){return Date.parse(e.timestamp)-Date.parse(t.timestamp)}));return t[t.length-1]},exports.getRouter=function(e,t){return s.routers.find((function(a){return a.chainId===e&&a.version===t}))},exports.getRouters=p,exports.getShortNames=function(){return n.chains.map((function(e){return e.shortName}))},exports.getTokenByAddress=function(e,t){var n;return null!=(n=a.tokens.find((function(a){return a.address.toLowerCase()===e.toLowerCase()&&(!t||a.chainId===t)})))?n:null},exports.getTokenBySymbol=function(e,t){var n;return null!=(n=a.tokens.find((function(a){return a.symbol===e&&(!t||a.chainId===t)})))?n:null},exports.getTokens=function(e){return a.tokens.filter((function(t){return t.chainId===e}))},exports.getVersionUpgrade=function(e,t){return t.major>e.major?exports.VersionUpgrade.MAJOR:t.major<e.major?exports.VersionUpgrade.NONE:t.minor>e.minor?exports.VersionUpgrade.MINOR:t.minor<e.minor?exports.VersionUpgrade.NONE:t.patch>e.patch?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.isVersionUpdate=function(e,t){return r(e,t)<0},exports.minVersionBump=function(e,t){var a=c(e,t);return a.removed.length>0?exports.VersionUpgrade.MAJOR:a.added.length>0?exports.VersionUpgrade.MINOR:Object.keys(a.changed).length>0?exports.VersionUpgrade.PATCH:exports.VersionUpgrade.NONE},exports.nextVersion=function(e,t){switch(t){case exports.VersionUpgrade.NONE:return e;case exports.VersionUpgrade.MAJOR:return{major:e.major+1,minor:0,patch:0};case exports.VersionUpgrade.MINOR:return{major:e.major,minor:e.minor+1,patch:0};case exports.VersionUpgrade.PATCH:return{major:e.major,minor:e.minor,patch:e.patch+1}}},exports.routerlist=s,exports.tokenlist=a,exports.tokenschema=a,exports.versionComparator=r;
2
2
  //# sourceMappingURL=tokenlists.cjs.production.min.js.map
@@ -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 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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\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 tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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","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","HIRO_ROUTER_ABIS","0.1","0.2","HiroRouterV02","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","getRouters","routerlist","routers","needle","chainlist","chains","find","testnetfaucets","faucets","token","toLowerCase","sorted","sort","Date","parse","timestamp","version","map","chain","shortName","tokenAddress","tokenlist","tokens","tokenSymbol","symbol","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"wEAEYA,ECGAC,0mwBCDCC,EAA0C,CACrDC,2uDACAC,GAAOC,EACPC,KAAQD,YCCME,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,YCvDYG,EAAWzB,GACzB,OAAO0B,EAAWC,QAAQnB,QAAO,SAACoB,GAChC,OAAOA,EAAO5B,UAAYA,MLlElBpB,EAAAA,4BAAAA,iDAGVA,sBACAA,sBACAA,wBACAA,oBAGAA,0BACAA,YACAA,YAGAA,iBACAA,+BCZUC,EAAAA,yBAAAA,6CAEVA,qBACAA,qBACAA,igMISuBmB,GACvB,OAAO6B,EAAUC,OAAOC,MAAK,SAACH,GAC5B,OAAOA,EAAO5B,UAAYA,wCAqCGD,GAC/B,OAAOiC,EAAeC,QAAQF,MAAK,SAACH,GAClC,OACEA,EAAOM,MAAMC,gBAAkBpC,EAAUE,QAAQkC,eACjDP,EAAO5B,UAAYD,EAAUC,6CAiBHA,GAC9B,IAAMoC,EAASX,EAAWzB,GAASqC,MAAK,SAAC3B,EAAGC,GAC1C,OAAO2B,KAAKC,MAAM7B,EAAE8B,WAAaF,KAAKC,MAAM5B,EAAE6B,cAEhD,OAAOJ,EAAOA,EAAOnB,OAAS,+BAVNjB,EAAiByC,GACzC,OAAOf,EAAWC,QAAQI,MAAK,SAACH,GAC9B,OAAOA,EAAO5B,UAAYA,GAAW4B,EAAOa,UAAYA,iDAW5D,WACE,OAAOZ,EAAUC,OAAOY,KAAI,SAAAC,GAAK,OAAIA,EAAMC,iDA7D3CC,EACA7C,SAEA,gBACG8C,EAAUC,OAAOhB,MAAK,SAACG,GACtB,OACEA,EAAMjC,QAAQkC,gBAAkBU,EAAaV,iBAC3CnC,GAAWkC,EAAMlC,UAAYA,SAEf,wCAKtBgD,EACAhD,SAEA,gBACG8C,EAAUC,OAAOhB,MAAK,SAACG,GACtB,OACEA,EAAMe,SAAWD,KAAiBhD,GAAWkC,EAAMlC,UAAYA,SAE/C,iCAIEA,GACxB,OAAO8C,EAAUC,OAAOvC,QAAO,SAACoB,GAC9B,OAAOA,EAAO5B,UAAYA,yCJlC5BN,EACAC,GAEA,OAAIA,EAAOL,MAAQI,EAAKJ,MACfT,uBAAeqE,MAEpBvD,EAAOL,MAAQI,EAAKJ,MACfT,uBAAesE,KAEpBxD,EAAOJ,MAAQG,EAAKH,MACfV,uBAAeuE,MAEpBzD,EAAOJ,MAAQG,EAAKH,MACfV,uBAAesE,KAEjBxD,EAAOH,MAAQE,EAAKF,MAAQX,uBAAewE,MAAQxE,uBAAesE,uCK5B3CzD,EAAeC,GAC7C,OAAOR,EAAkBO,EAAMC,GAAU,mCCGzC2D,EACAC,GAEA,IAAMC,EAAO/D,EAAe6D,EAAUC,GACtC,OAAIC,EAAKlC,QAAQL,OAAS,EAAUpC,uBAAeqE,MAC/CM,EAAKrC,MAAMF,OAAS,EAAUpC,uBAAeuE,MAC7C9C,OAAOC,KAAKiD,EAAKtC,SAASD,OAAS,EAAUpC,uBAAewE,MACzDxE,uBAAesE,mCCTIzD,EAAe+D,GACzC,OAAQA,GACN,KAAK5E,uBAAesE,KAClB,OAAOzD,EAET,KAAKb,uBAAeqE,MAClB,MAAO,CAAE5D,MAAOI,EAAKJ,MAAQ,EAAGC,MAAO,EAAGC,MAAO,GAEnD,KAAKX,uBAAeuE,MAClB,MAAO,CACL9D,MAAOI,EAAKJ,MACZC,MAAOG,EAAKH,MAAQ,EACpBC,MAAO,GAGX,KAAKX,uBAAewE,MAClB,MAAO,CACL/D,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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\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 tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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","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","HIRO_ROUTER_ABIS","0.1","0.2","HiroRouterV02","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","getRouters","routerlist","routers","needle","chainlist","chains","find","testnetfaucets","faucets","token","toLowerCase","sorted","sort","Date","parse","timestamp","version","map","chain","shortName","tokenAddress","tokenlist","tokens","tokenSymbol","symbol","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"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"}
@@ -50,6 +50,20 @@ var tokens = [
50
50
  ],
51
51
  address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
52
52
  },
53
+ {
54
+ chainId: 8453,
55
+ coinGeckoId: "ethereum",
56
+ name: "Ether",
57
+ symbol: "ETH",
58
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/ETH.svg",
59
+ decimals: 18,
60
+ tags: [
61
+ "Base",
62
+ "Native Token",
63
+ "Top10"
64
+ ],
65
+ address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
66
+ },
53
67
  {
54
68
  chainId: 1,
55
69
  coinGeckoId: "weth",
@@ -89,6 +103,19 @@ var tokens = [
89
103
  ],
90
104
  address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
91
105
  },
106
+ {
107
+ chainId: 8453,
108
+ coinGeckoId: "weth",
109
+ name: "Wrapped Ether",
110
+ symbol: "WETH",
111
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/WETH.svg",
112
+ decimals: 18,
113
+ tags: [
114
+ "Base",
115
+ "Native Token"
116
+ ],
117
+ address: "0x4200000000000000000000000000000000000006"
118
+ },
92
119
  {
93
120
  chainId: 1,
94
121
  coinGeckoId: "tether",
@@ -185,6 +212,22 @@ var tokens = [
185
212
  ],
186
213
  address: "0x0b2c639c533813f4aa9d7837caf62653d097ff85"
187
214
  },
215
+ {
216
+ chainId: 8453,
217
+ coinGeckoId: "usd-coin",
218
+ name: "USD Coin",
219
+ symbol: "USDC",
220
+ currency: "USD",
221
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/tokens/USDC.svg",
222
+ decimals: 6,
223
+ tags: [
224
+ "Base",
225
+ "Stablecoin",
226
+ "Top10",
227
+ "USD"
228
+ ],
229
+ address: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
230
+ },
188
231
  {
189
232
  chainId: 42161,
190
233
  coinGeckoId: "usd-coin",
@@ -748,6 +791,28 @@ var chains = [
748
791
  },
749
792
  curveRouterAddress: "0xe6358f6a45b502477e83cc1cda759f540e4459ee"
750
793
  },
794
+ {
795
+ chainName: "Base",
796
+ shortName: "base",
797
+ testnet: false,
798
+ chainId: 8453,
799
+ logoUri: "https://raw.githubusercontent.com/yodlpay/tokenlists/main/logos/chains/8453/logo.png",
800
+ rpcUrls: [
801
+ "https://mainnet.base.org"
802
+ ],
803
+ wrappedNativeToken: "0x4200000000000000000000000000000000000006",
804
+ explorerUrl: "https://basescan.org",
805
+ timestamp: "2024-06-17T14:52:05+00:00",
806
+ feeTreasury: "0x46959a8a332eca1a05Bd4F18115b8F2E1C2F2f05",
807
+ priceFeeds: {
808
+ BRL: "0x0b0E64c05083FdF9ED7C5D3d8262c4216eFc9394",
809
+ EUR: "0xc91D87E81faB8f93699ECf7Ee9B44D11e1D53F0F"
810
+ },
811
+ tokenFeeds: {
812
+ ETH: "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70"
813
+ },
814
+ curveRouterAddress: "0x0000000000000000000000000000000000000000"
815
+ },
751
816
  {
752
817
  chainName: "Polygon",
753
818
  shortName: "matic",
@@ -874,6 +939,20 @@ var routers = [
874
939
  timestamp: "2023-09-07T00:00:00+00:00",
875
940
  version: "0.2",
876
941
  fee: "0.002"
942
+ },
943
+ {
944
+ chainId: 8453,
945
+ address: "0x2BaE9Bb53BCe89c760dBfA55D854D43ab96EE19f",
946
+ timestamp: "2024-06-17T15:50:00+00:00",
947
+ version: "0.2",
948
+ fee: "0.002"
949
+ },
950
+ {
951
+ chainId: 8453,
952
+ address: "0x775397bf2f68af5aba4029260c1f44770b77d513",
953
+ timestamp: "2024-06-18T17:50:00+00:00",
954
+ version: "0.3",
955
+ fee: "0.002"
877
956
  }
878
957
  ];
879
958
  var routerlist = {
@@ -2365,6 +2444,7 @@ var TokenListTagNames;
2365
2444
  TokenListTagNames["OPTIMISM"] = "Optimism";
2366
2445
  TokenListTagNames["ARBITRUM"] = "Arbitrum";
2367
2446
  TokenListTagNames["AVALANCHE"] = "Avalanche";
2447
+ TokenListTagNames["BASE"] = "Base";
2368
2448
  TokenListTagNames["TESTNET"] = "TESTNET"; // Coin/currency
2369
2449
 
2370
2450
  TokenListTagNames["STABLECOIN"] = "Stablecoin";
@@ -1 +1 @@
1
- {"version":3,"file":"tokenlists.esm.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","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 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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 { 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 { 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 { 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 { 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","import tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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"],"names":["HIRO_ROUTER_ABIS","HiroRouterV01","HiroRouterV02","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","getChain","chainlist","chains","find","needle","getTokenByAddress","tokenAddress","tokenlist","tokens","token","toLowerCase","getTokenBySymbol","tokenSymbol","symbol","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIaA,gBAAgB,GAA0B;EACrD,OAAOC,aAD8C;EAErD,OAAOC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"}
1
+ {"version":3,"file":"tokenlists.esm.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport HiroRouterV01 from \"./abis/HiroRouterV0.1.abi.json\";\nimport HiroRouterV02 from \"./abis/HiroRouterV0.2.abi.json\";\n\nexport const HIRO_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": HiroRouterV01,\n \"0.2\": HiroRouterV02,\n \"test\": HiroRouterV02\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","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}\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 rpcUrls: string[];\n readonly wrappedNativeToken: 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}\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","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 { 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 { 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 { 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 { 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","import tokenlist from './tokenlist-v1.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport tokenschema from './tokenlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } 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 { tokenschema, tokenlist, chainlist, routerlist };\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.tokens.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 getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.tokens.find((token: any) => {\n return (\n token.symbol === tokenSymbol && (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokens(chainId: number): TokenInfo[] {\n return tokenlist.tokens.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[];\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\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(chainId: number, version: string): RouterInfo {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as 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"],"names":["HIRO_ROUTER_ABIS","HiroRouterV01","HiroRouterV02","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","getChain","chainlist","chains","find","needle","getTokenByAddress","tokenAddress","tokenlist","tokens","token","toLowerCase","getTokenBySymbol","tokenSymbol","symbol","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
package/dist/types.d.ts CHANGED
@@ -4,6 +4,7 @@ export declare enum TokenListTagNames {
4
4
  OPTIMISM = "Optimism",
5
5
  ARBITRUM = "Arbitrum",
6
6
  AVALANCHE = "Avalanche",
7
+ BASE = "Base",
7
8
  TESTNET = "TESTNET",
8
9
  STABLECOIN = "Stablecoin",
9
10
  USD = "USD",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yodlpay/tokenlists",
3
- "version": "0.3.2",
3
+ "version": "0.3.34",
4
4
  "description": "Tokenlist typings, schema and lists.",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",