Skip to content

Commit 4fe4a93

Browse files
authored
chore: remove zerion non-fungible token and gas api (#12254)
* chore: remove zerion non-fungible token and gas api The zerion non-fungible token api is no longer needed. * fixup! chore: remove zerion non-fungible token and gas api * fixup! chore: remove zerion non-fungible token and gas api * fix typo
1 parent 2f8ea4c commit 4fe4a93

File tree

8 files changed

+11
-326
lines changed

8 files changed

+11
-326
lines changed

packages/web3-providers/src/Twitter/apis/createTweet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export async function createTweet(tweet: TwitterBaseAPI.Tweet) {
8282
if (response.errors) {
8383
// TODO Fetch main.xxx.js and extract queryIds from Twitter's client code.
8484
console.error(
85-
"Errors occupied, query id should be outdated. Please check twitter's client code in main.xxx.js",
85+
"Errors occupied, query id could be outdated. Please check twitter's client code in main.xxx.js",
8686
'Response Errors:',
8787
response.errors,
8888
)

packages/web3-providers/src/Web3/EVM/apis/HubAPI.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { mixin } from '@masknet/shared-base'
2+
import type { Web3Definition } from '@masknet/web3-shared-evm'
3+
import { createHubMemoized } from '../../Base/apis/createHubMemoized.js'
4+
import type { BaseHubOptions } from '../../Base/apis/HubOptions.js'
25
import { EVMBaseHub } from './HubBaseAPI.js'
36
import { HubFungibleAPI } from './HubFungibleAPI.js'
47
import { HubNonFungibleAPI } from './HubNonFungibleAPI.js'
5-
import { createHubMemoized } from '../../Base/apis/createHubMemoized.js'
6-
import type { BaseHubOptions } from '../../Base/apis/HubOptions.js'
7-
import type { Web3Definition } from '@masknet/web3-shared-evm'
88

99
export const createHub = createHubMemoized((initial?: BaseHubOptions<Web3Definition['ChainId']>) => {
1010
return mixin(new EVMBaseHub(initial), new HubFungibleAPI(initial), new HubNonFungibleAPI(initial))

packages/web3-providers/src/Web3/EVM/apis/HubFungibleAPI.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import * as DeBankFungibleToken from /* webpackDefer: true */ '../../../DeBank/i
1313
import * as GoPlusAuthorization from /* webpackDefer: true */ '../../../GoPlusLabs/index.js'
1414
import * as R2D2TokenList from /* webpackDefer: true */ '../../../R2D2/index.js'
1515
import * as Rabby from /* webpackDefer: true */ '../../../Rabby/index.js'
16-
import * as Zerion from /* webpackDefer: true */ '../../../Zerion/index.js'
1716

1817
export class HubFungibleAPI extends BaseHubFungible<ChainId, SchemaType> {
1918
protected override HubOptions = new EVMHubOptionsProvider(this.options)
@@ -34,7 +33,6 @@ export class HubFungibleAPI extends BaseHubFungible<ChainId, SchemaType> {
3433
{
3534
[SourceType.Chainbase]: ChainbaseFungibleToken.ChainbaseFungibleToken,
3635
[SourceType.DeBank]: DeBankFungibleToken.DeBankFungibleToken,
37-
[SourceType.Zerion]: Zerion.Zerion,
3836
[SourceType.GoPlus]: GoPlusAuthorization.GoPlusAuthorization,
3937
[SourceType.Rabby]: Rabby.Rabby,
4038
[SourceType.R2D2]: R2D2TokenList.R2D2TokenList,
@@ -43,7 +41,6 @@ export class HubFungibleAPI extends BaseHubFungible<ChainId, SchemaType> {
4341
},
4442
[
4543
DeBankFungibleToken.DeBankFungibleToken,
46-
Zerion.Zerion,
4744
ChainbaseFungibleToken.ChainbaseFungibleToken,
4845
Rabby.Rabby,
4946
GoPlusAuthorization.GoPlusAuthorization,

packages/web3-providers/src/Web3/EVM/apis/HubNonFungibleAPI.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import * as GoPlusAuthorization from /* webpackDefer: true */ '../../../GoPlusLa
77
import * as NFTScanNonFungibleTokenEVM from /* webpackDefer: true */ '../../../NFTScan/index.js'
88
import * as R2D2TokenList from /* webpackDefer: true */ '../../../R2D2/index.js'
99
import * as Rabby from /* webpackDefer: true */ '../../../Rabby/index.js'
10-
import * as ZerionNonFungibleToken from /* webpackDefer: true */ '../../../Zerion/index.js'
1110
import * as Zora from /* webpackDefer: true */ '../../../Zora/index.js'
1211
import { BaseHubNonFungible } from '../../Base/apis/HubNonFungible.js'
1312
import type { EVMHubOptions } from '../types/index.js'
@@ -25,7 +24,6 @@ export class HubNonFungibleAPI extends BaseHubNonFungible<ChainId, SchemaType> {
2524
>(
2625
{
2726
[SourceType.Chainbase]: ChainbaseNonFungibleToken.ChainbaseNonFungibleToken,
28-
[SourceType.Zerion]: ZerionNonFungibleToken.ZerionNonFungibleToken,
2927
[SourceType.NFTScan]: NFTScanNonFungibleTokenEVM.NFTScanNonFungibleTokenEVM,
3028
[SourceType.Alchemy_EVM]: AlchemyEVM.AlchemyEVM,
3129
[SourceType.Zora]: Zora.Zora,
@@ -36,7 +34,6 @@ export class HubNonFungibleAPI extends BaseHubNonFungible<ChainId, SchemaType> {
3634
options.chainId === ChainId.Mainnet ?
3735
[
3836
NFTScanNonFungibleTokenEVM.NFTScanNonFungibleTokenEVM,
39-
ZerionNonFungibleToken.ZerionNonFungibleToken,
4037
AlchemyEVM.AlchemyEVM,
4138
Zora.Zora,
4239
GoPlusAuthorization.GoPlusAuthorization,
@@ -45,7 +42,6 @@ export class HubNonFungibleAPI extends BaseHubNonFungible<ChainId, SchemaType> {
4542
]
4643
: [
4744
NFTScanNonFungibleTokenEVM.NFTScanNonFungibleTokenEVM,
48-
ZerionNonFungibleToken.ZerionNonFungibleToken,
4945
AlchemyEVM.AlchemyEVM,
5046
Zora.Zora,
5147
GoPlusAuthorization.GoPlusAuthorization,
Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
1-
import { delay } from '@masknet/kit'
2-
import { type ChainId } from '@masknet/web3-shared-evm'
3-
import { mapKeys } from 'lodash-es'
41
import io from 'socket.io-client'
5-
import { zerionChainIdResolver } from './helpers.js'
62
import {
73
SocketRequestNameSpace,
84
SocketRequestType,
95
type SocketNameSpace,
106
type SocketRequestBody,
117
type SocketResponseBody,
128
type ZerionAssetResponseBody,
13-
type ZerionGasResponseBody,
14-
type ZerionNonFungibleTokenResponseBody,
15-
type ZerionTransactionResponseBody,
169
} from './types.js'
1710

1811
const ZERION_API = 'wss://api-v4.zerion.io'
@@ -81,80 +74,3 @@ export async function getAssetsList(address: string, scope: string) {
8174
},
8275
)) as ZerionAssetResponseBody
8376
}
84-
85-
export async function getTransactionList(address: string, scope: string, page?: number, size = 30) {
86-
return (await subscribeFromZerion(
87-
{
88-
namespace: SocketRequestNameSpace.Address,
89-
socket: createSocket(),
90-
},
91-
{
92-
scope: [scope],
93-
payload: {
94-
address,
95-
currency: 'usd',
96-
transactions_limit: size,
97-
transactions_offset: (page ?? 0) * size,
98-
transactions_search_query: '',
99-
},
100-
},
101-
)) as ZerionTransactionResponseBody
102-
}
103-
104-
export async function getNonFungibleAsset(account: string, address: string, tokenId: string) {
105-
return Promise.race([
106-
subscribeFromZerion(
107-
{
108-
namespace: SocketRequestNameSpace.Address,
109-
socket: createSocket(),
110-
},
111-
{
112-
scope: ['nft'],
113-
payload: {
114-
address: account,
115-
nft_asset_code: `${address}:${tokenId}`,
116-
},
117-
},
118-
) as Promise<ZerionNonFungibleTokenResponseBody>,
119-
delay(5_000),
120-
])
121-
}
122-
123-
export async function getNonFungibleAssets(address: string, page?: number, size = 20, contract_address?: string) {
124-
return Promise.race([
125-
subscribeFromZerion(
126-
{ namespace: SocketRequestNameSpace.Address, socket: createSocket() },
127-
{
128-
scope: ['nft'],
129-
payload: {
130-
address,
131-
contract_addresses: contract_address ? [contract_address] : [],
132-
mode: 'nft',
133-
nft_limit: size,
134-
nft_offset: (page ?? 0) * size,
135-
},
136-
},
137-
SocketRequestType.GET,
138-
) as Promise<ZerionNonFungibleTokenResponseBody>,
139-
delay(5_000),
140-
])
141-
}
142-
export async function getGasOptions(chainId: ChainId) {
143-
const response = (await subscribeFromZerion(
144-
{
145-
namespace: SocketRequestNameSpace.Gas,
146-
socket: createSocket(SocketRequestNameSpace.Gas),
147-
},
148-
{
149-
scope: ['chain-prices'],
150-
payload: {},
151-
},
152-
SocketRequestType.GET,
153-
)) as ZerionGasResponseBody
154-
155-
if (!response.payload['chain-prices']) return
156-
157-
const gasOptionsCollection = mapKeys(response.payload['chain-prices'], (_, key) => zerionChainIdResolver(key))
158-
159-
return gasOptionsCollection[chainId].info.classic
160-
}

packages/web3-providers/src/Zerion/index.ts

Lines changed: 6 additions & 188 deletions
Original file line numberDiff line numberDiff line change
@@ -2,69 +2,21 @@ import {
22
createIndicator,
33
createNextIndicator,
44
createPageable,
5-
EMPTY_LIST,
65
type Pageable,
76
type PageIndicator,
87
} from '@masknet/shared-base'
98
import { fetchJSON } from '@masknet/web3-providers/helpers'
10-
import {
11-
GasOptionType,
12-
isSameAddress,
13-
SourceType,
14-
toFixed,
15-
TokenType,
16-
type Transaction,
17-
} from '@masknet/web3-shared-base'
18-
import { ChainId, type GasOption, isValidChainId, resolveImageURL, SchemaType } from '@masknet/web3-shared-evm'
19-
import { compact, first, unionWith } from 'lodash-es'
9+
import { type Transaction } from '@masknet/web3-shared-base'
10+
import { type ChainId, type SchemaType } from '@masknet/web3-shared-evm'
11+
import { compact } from 'lodash-es'
2012
import urlcat from 'urlcat'
21-
import type {
22-
BaseGasOptions,
23-
BaseHubOptions,
24-
FungibleTokenAPI,
25-
HistoryAPI,
26-
NonFungibleTokenAPI,
27-
} from '../entry-types.js'
28-
import { getAssetFullName } from '../helpers/getAssetFullName.js'
29-
import { getNativeAssets } from '../helpers/getNativeAssets.js'
30-
import { getAssetsList, getGasOptions, getNonFungibleAsset, getNonFungibleAssets } from './base-api.js'
31-
import { formatAsset, formatRestTransaction, isValidAsset, zerionChainIdResolver } from './helpers.js'
13+
import type { BaseHubOptions } from '../entry-types.js'
14+
import { formatRestTransaction } from './helpers.js'
3215
import type { TransactionsResponse } from './reset-types.js'
33-
import type { ZerionNonFungibleCollection, ZerionNonFungibleTokenItem } from './types.js'
3416

35-
const ZERION_NFT_DETAIL_URL = 'https://app.zerion.io/nfts/'
36-
const filterAssetType = ['compound', 'trash', 'uniswap', 'uniswap-v2', 'nft']
3717
const ZERION_REST_API = 'https://zerion-proxy.r2d2.to/'
3818

39-
class ZerionAPI implements FungibleTokenAPI.Provider<ChainId, SchemaType>, HistoryAPI.Provider<ChainId, SchemaType> {
40-
async getAssets(address: string, options?: BaseHubOptions<ChainId>) {
41-
const { meta, payload } = await getAssetsList(address, 'positions')
42-
if (meta.status !== 'ok') return createPageable(EMPTY_LIST, createIndicator(options?.indicator))
43-
44-
const assets = payload.positions?.positions
45-
.filter(
46-
(x) =>
47-
x.type === 'asset' &&
48-
x.asset.icon_url &&
49-
x.asset.is_displayable &&
50-
!filterAssetType.includes(x.asset.type) &&
51-
isValidAsset(x) &&
52-
zerionChainIdResolver(x.chain),
53-
)
54-
.map((x) => {
55-
return formatAsset(zerionChainIdResolver(x.chain)!, x)
56-
})
57-
58-
return createPageable(
59-
unionWith(
60-
assets || [],
61-
getNativeAssets(),
62-
(a, z) => isSameAddress(a.address, z.address) && a.chainId === z.chainId,
63-
),
64-
createIndicator(options?.indicator),
65-
)
66-
}
67-
19+
class ZerionAPI {
6820
async getTransactions(
6921
address: string,
7022
{ indicator, size = 20 }: BaseHubOptions<ChainId> = {},
@@ -88,138 +40,4 @@ class ZerionAPI implements FungibleTokenAPI.Provider<ChainId, SchemaType>, Histo
8840
}
8941
}
9042

91-
class ZerionNonFungibleTokenAPI implements NonFungibleTokenAPI.Provider<ChainId, SchemaType> {
92-
createNonFungibleCollectionFromCollectionData(chainId: ChainId, collection: ZerionNonFungibleCollection) {
93-
return {
94-
chainId,
95-
scheme: SchemaType.ERC721,
96-
name: collection.name,
97-
slug: collection.collection_id,
98-
description: collection.description,
99-
iconURL: collection.icon_url,
100-
source: SourceType.Zerion,
101-
}
102-
}
103-
createNonFungibleTokenPermalink(address?: string, tokenId?: string) {
104-
if (!address || !tokenId) return
105-
return ZERION_NFT_DETAIL_URL + `${address}:${tokenId}`
106-
}
107-
108-
createNonFungibleTokenAssetFromNFT(chainId: ChainId, nft: ZerionNonFungibleTokenItem) {
109-
const name = getAssetFullName(
110-
nft.asset.contract_address,
111-
nft.asset.collection.name,
112-
nft.asset.name,
113-
nft.asset.token_id,
114-
)
115-
return {
116-
chainId,
117-
id: `${chainId}_${nft.asset.contract_address}_${nft.asset.token_id}`,
118-
type: TokenType.NonFungible,
119-
schema: nft.standard === 'ERC1155' ? SchemaType.ERC1155 : SchemaType.ERC721,
120-
address: nft.asset.contract_address,
121-
tokenId: nft.asset.token_id,
122-
contract: {
123-
chainId,
124-
schema: nft.standard === 'ERC1155' ? SchemaType.ERC1155 : SchemaType.ERC721,
125-
address: nft.asset.contract_address,
126-
name: nft.asset.collection.name,
127-
symbol: nft.asset.symbol,
128-
},
129-
metadata: {
130-
chainId,
131-
name,
132-
symbol: nft.asset.symbol,
133-
imageURL: resolveImageURL(nft.asset.preview.url, name, nft.asset.contract_address),
134-
mediaURL: nft.asset.detail.url,
135-
mediaType: nft.asset.detail.meta.type,
136-
source: SourceType.Zerion,
137-
},
138-
collection: {
139-
chainId,
140-
name: nft.asset.collection_info.name,
141-
slug: nft.asset.collection_info.slug,
142-
description: nft.asset.collection_info.description,
143-
address: nft.asset.contract_address,
144-
iconURL: nft.asset.collection_info.icon_url ?? nft.asset.collection.icon_url,
145-
verified: nft.asset.is_verified,
146-
isSpam: undefined,
147-
},
148-
source: SourceType.Zerion,
149-
link: this.createNonFungibleTokenPermalink(nft.asset.contract_address, nft.asset.token_id),
150-
}
151-
}
152-
153-
async getAsset(
154-
address: string,
155-
tokenId: string,
156-
{ chainId = ChainId.Mainnet, account }: BaseHubOptions<ChainId> = {},
157-
) {
158-
if (!account || !isValidChainId(chainId)) return
159-
const response = await getNonFungibleAsset(account, address, tokenId)
160-
if (!response?.payload.nft.length) return
161-
const payload = first(response.payload.nft)
162-
if (!payload) return
163-
return this.createNonFungibleTokenAssetFromNFT(chainId, payload)
164-
}
165-
async getAssets(account: string, { chainId = ChainId.Mainnet, indicator, size }: BaseHubOptions<ChainId> = {}) {
166-
if (!isValidChainId(chainId)) return createPageable(EMPTY_LIST, createIndicator(indicator))
167-
const response = await getNonFungibleAssets(account, indicator?.index, size)
168-
if (!response?.payload.nft.length) return createPageable(EMPTY_LIST, createIndicator(indicator))
169-
const assets = response.payload.nft.map((x) => this.createNonFungibleTokenAssetFromNFT(chainId, x))
170-
171-
return createPageable(
172-
assets,
173-
createIndicator(indicator),
174-
assets.length ? createNextIndicator(indicator) : undefined,
175-
)
176-
}
177-
178-
async getAssetsByCollection(
179-
address: string,
180-
{ chainId = ChainId.Mainnet, indicator, size, account }: BaseHubOptions<ChainId> = {},
181-
) {
182-
if (!account || !isValidChainId(chainId)) return createPageable(EMPTY_LIST, createIndicator(indicator))
183-
const response = await getNonFungibleAssets(account, indicator?.index, size, address)
184-
if (!response) return
185-
const assets = response.payload.nft.map((x) => this.createNonFungibleTokenAssetFromNFT(chainId, x))
186-
187-
return createPageable(
188-
assets,
189-
createIndicator(indicator),
190-
assets.length ? createNextIndicator(indicator) : undefined,
191-
)
192-
}
193-
}
194-
195-
class ZerionGasAPI implements BaseGasOptions.Provider<ChainId, GasOption> {
196-
async getGasOptions(chainId: ChainId): Promise<Record<GasOptionType, GasOption> | undefined> {
197-
if (!isValidChainId(chainId)) return
198-
const result = await getGasOptions(chainId)
199-
return {
200-
[GasOptionType.FAST]: {
201-
estimatedSeconds: 15,
202-
suggestedMaxFeePerGas: toFixed(result?.fast),
203-
suggestedMaxPriorityFeePerGas: '0',
204-
},
205-
[GasOptionType.NORMAL]: {
206-
estimatedSeconds: 30,
207-
suggestedMaxFeePerGas: toFixed(result?.standard),
208-
suggestedMaxPriorityFeePerGas: '0',
209-
},
210-
[GasOptionType.SLOW]: {
211-
estimatedSeconds: 60,
212-
suggestedMaxFeePerGas: toFixed(result?.slow),
213-
suggestedMaxPriorityFeePerGas: '0',
214-
},
215-
[GasOptionType.CUSTOM]: {
216-
estimatedSeconds: 0,
217-
suggestedMaxFeePerGas: '',
218-
suggestedMaxPriorityFeePerGas: '',
219-
},
220-
}
221-
}
222-
}
22343
export const Zerion = new ZerionAPI()
224-
export const ZerionNonFungibleToken = new ZerionNonFungibleTokenAPI()
225-
export const ZerionGas = new ZerionGasAPI()

0 commit comments

Comments
 (0)