@uniswap/token-list-bridge-utils 1.1.0 → 1.2.0

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.
@@ -0,0 +1,11 @@
1
+ import { MappingProvider } from './MappingProvider'
2
+ import { GenericMappedTokenData } from '../constants/types'
3
+ import bnbmappings from '../local_mappings/bnb.json'
4
+
5
+ // barring a better external source, we use a local source of mappings for bnb
6
+ export class BnbMappingProvider implements MappingProvider {
7
+ async provide(): Promise<GenericMappedTokenData> {
8
+ const tokens = bnbmappings as GenericMappedTokenData
9
+ return tokens
10
+ }
11
+ }
@@ -2,8 +2,9 @@ import axios from 'axios'
2
2
  import { MappingProvider } from './MappingProvider'
3
3
  import { PolygonMappedTokenData } from '../constants/types'
4
4
 
5
- const url = 'https://tokenmapper.api.matic.today/api/v1/mapping?'
6
- const params = 'map_type=[%22POS%22]&chain_id=137&limit=200&offset='
5
+ // called from https://mapper.polygon.technology
6
+ const url = 'https://open-api.polygon.technology/api/v1/info/all-mappings'
7
+ const access_token = '504afd90-3228-4df9-9d88-9b4d70646101'
7
8
 
8
9
  /**
9
10
  * The Polygon team manually maintains the mapping via user submissions at
@@ -13,22 +14,15 @@ const params = 'map_type=[%22POS%22]&chain_id=137&limit=200&offset='
13
14
  */
14
15
  export class PolygonMappingProvider implements MappingProvider {
15
16
  async provide(): Promise<PolygonMappedTokenData> {
16
- let offset = 0
17
+ const response = await axios.get(url, {
18
+ headers: { 'x-access-token': access_token },
19
+ })
17
20
  const tokens: PolygonMappedTokenData = {}
18
- while (true) {
19
- const response = await axios.get(`${url}${params}${offset}`)
20
21
 
21
- if (response.data.message === 'success') {
22
- for (const token of response.data.data.mapping) {
23
- tokens[token.root_token.toLowerCase()] = token
24
- }
25
-
26
- if (response.data.data.has_next_page === true) {
27
- offset += 200
28
- continue
29
- }
22
+ for (const token of response.data) {
23
+ if (token.isPos) {
24
+ tokens[token.rootToken.toLowerCase()] = token
30
25
  }
31
- break
32
26
  }
33
27
  return tokens
34
28
  }
@@ -3,6 +3,7 @@ import { Contract } from 'web3-eth-contract'
3
3
  import { ArbitrumMappingProvider } from './ArbitrumMappingProvider'
4
4
  import { OptimismMappingProvider } from './OptimismMappingProvider'
5
5
  import { PolygonMappingProvider } from './PolygonMappingProvider'
6
+ import { BnbMappingProvider } from './BnbMappingProvider'
6
7
  import { TokenInfo, TokenList } from '@uniswap/token-lists'
7
8
  import { ethers } from 'ethers'
8
9
  import {
@@ -25,6 +26,7 @@ const SUPPORTED_L2_CHAINS = [
25
26
  ChainId.ARBITRUM_ONE,
26
27
  ChainId.POLYGON,
27
28
  ChainId.OPTIMISM,
29
+ ChainId.BNB,
28
30
  ]
29
31
 
30
32
  export async function buildList(
@@ -136,6 +138,8 @@ function getMappingProvider(chainId: ChainId, l1TokenList: TokenList) {
136
138
  return new OptimismMappingProvider()
137
139
  case ChainId.POLYGON:
138
140
  return new PolygonMappingProvider()
141
+ case ChainId.BNB:
142
+ return new BnbMappingProvider()
139
143
  default:
140
144
  throw new Error(`Chain ${chainId} not supported for fetching mappings.`)
141
145
  }
@@ -182,12 +186,11 @@ async function getChildTokenDetails(
182
186
 
183
187
  const childTokenAddress = childToken
184
188
  ? ethers.utils.getAddress(
185
- typeof childToken === 'object' ? childToken.child_token : childToken
189
+ typeof childToken === 'object' ? childToken.childToken : childToken
186
190
  )
187
191
  : undefined
188
192
  const childTokenValid = Boolean(
189
193
  childTokenAddress &&
190
- (typeof childToken === 'object' ? !childToken.deleted : true) &&
191
194
  (await hasExistingTokenContract(childTokenAddress, chainId))
192
195
  )
193
196
  return {
package/src/utils.ts CHANGED
@@ -108,6 +108,8 @@ export function getRpcUrl(chainId: ChainId): string {
108
108
  return 'https://polygon-rpc.com/'
109
109
  case ChainId.POLYGON_MUMBAI:
110
110
  return 'https://rpc-endpoints.superfluid.dev/mumbai'
111
+ case ChainId.BNB:
112
+ return 'https://bsc-dataseed1.binance.org'
111
113
  default:
112
114
  }
113
115
  throw new Error('Unsupported ChainId')