@metamask/core-backend 4.1.0 → 5.1.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.
- package/CHANGELOG.md +35 -6
- package/README.md +252 -1
- package/dist/AccountActivityService.cjs +1 -1
- package/dist/AccountActivityService.cjs.map +1 -1
- package/dist/AccountActivityService.mjs +1 -1
- package/dist/AccountActivityService.mjs.map +1 -1
- package/dist/BackendWebSocketService-method-action-types.cjs.map +1 -1
- package/dist/BackendWebSocketService-method-action-types.d.cts +106 -20
- package/dist/BackendWebSocketService-method-action-types.d.cts.map +1 -1
- package/dist/BackendWebSocketService-method-action-types.d.mts +106 -20
- package/dist/BackendWebSocketService-method-action-types.d.mts.map +1 -1
- package/dist/BackendWebSocketService-method-action-types.mjs.map +1 -1
- package/dist/BackendWebSocketService.cjs +5 -3
- package/dist/BackendWebSocketService.cjs.map +1 -1
- package/dist/BackendWebSocketService.d.cts +2 -2
- package/dist/BackendWebSocketService.d.cts.map +1 -1
- package/dist/BackendWebSocketService.d.mts +2 -2
- package/dist/BackendWebSocketService.d.mts.map +1 -1
- package/dist/BackendWebSocketService.mjs +5 -3
- package/dist/BackendWebSocketService.mjs.map +1 -1
- package/dist/api/ApiPlatformClient.cjs +177 -0
- package/dist/api/ApiPlatformClient.cjs.map +1 -0
- package/dist/api/ApiPlatformClient.d.cts +127 -0
- package/dist/api/ApiPlatformClient.d.cts.map +1 -0
- package/dist/api/ApiPlatformClient.d.mts +127 -0
- package/dist/api/ApiPlatformClient.d.mts.map +1 -0
- package/dist/api/ApiPlatformClient.mjs +172 -0
- package/dist/api/ApiPlatformClient.mjs.map +1 -0
- package/dist/api/accounts/client.cjs +492 -0
- package/dist/api/accounts/client.cjs.map +1 -0
- package/dist/api/accounts/client.d.cts +213 -0
- package/dist/api/accounts/client.d.cts.map +1 -0
- package/dist/api/accounts/client.d.mts +213 -0
- package/dist/api/accounts/client.d.mts.map +1 -0
- package/dist/api/accounts/client.mjs +488 -0
- package/dist/api/accounts/client.mjs.map +1 -0
- package/dist/api/accounts/index.cjs +9 -0
- package/dist/api/accounts/index.cjs.map +1 -0
- package/dist/api/accounts/index.d.cts +6 -0
- package/dist/api/accounts/index.d.cts.map +1 -0
- package/dist/api/accounts/index.d.mts +6 -0
- package/dist/api/accounts/index.d.mts.map +1 -0
- package/dist/api/accounts/index.mjs +5 -0
- package/dist/api/accounts/index.mjs.map +1 -0
- package/dist/api/accounts/types.cjs +7 -0
- package/dist/api/accounts/types.cjs.map +1 -0
- package/dist/api/accounts/types.d.cts +195 -0
- package/dist/api/accounts/types.d.cts.map +1 -0
- package/dist/api/accounts/types.d.mts +195 -0
- package/dist/api/accounts/types.d.mts.map +1 -0
- package/dist/api/accounts/types.mjs +6 -0
- package/dist/api/accounts/types.mjs.map +1 -0
- package/dist/api/base-client.cjs +149 -0
- package/dist/api/base-client.cjs.map +1 -0
- package/dist/api/base-client.d.cts +54 -0
- package/dist/api/base-client.d.cts.map +1 -0
- package/dist/api/base-client.d.mts +54 -0
- package/dist/api/base-client.d.mts.map +1 -0
- package/dist/api/base-client.mjs +143 -0
- package/dist/api/base-client.mjs.map +1 -0
- package/dist/api/index.cjs +35 -0
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.cts +18 -0
- package/dist/api/index.d.cts.map +1 -0
- package/dist/api/index.d.mts +18 -0
- package/dist/api/index.d.mts.map +1 -0
- package/dist/api/index.mjs +18 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/api/prices/client.cjs +521 -0
- package/dist/api/prices/client.cjs.map +1 -0
- package/dist/api/prices/client.d.cts +235 -0
- package/dist/api/prices/client.d.cts.map +1 -0
- package/dist/api/prices/client.d.mts +235 -0
- package/dist/api/prices/client.d.mts.map +1 -0
- package/dist/api/prices/client.mjs +517 -0
- package/dist/api/prices/client.mjs.map +1 -0
- package/dist/api/prices/index.cjs +9 -0
- package/dist/api/prices/index.cjs.map +1 -0
- package/dist/api/prices/index.d.cts +6 -0
- package/dist/api/prices/index.d.cts.map +1 -0
- package/dist/api/prices/index.d.mts +6 -0
- package/dist/api/prices/index.d.mts.map +1 -0
- package/dist/api/prices/index.mjs +5 -0
- package/dist/api/prices/index.mjs.map +1 -0
- package/dist/api/prices/types.cjs +7 -0
- package/dist/api/prices/types.cjs.map +1 -0
- package/dist/api/prices/types.d.cts +61 -0
- package/dist/api/prices/types.d.cts.map +1 -0
- package/dist/api/prices/types.d.mts +61 -0
- package/dist/api/prices/types.d.mts.map +1 -0
- package/dist/api/prices/types.mjs +6 -0
- package/dist/api/prices/types.mjs.map +1 -0
- package/dist/api/shared-types.cjs +93 -0
- package/dist/api/shared-types.cjs.map +1 -0
- package/dist/api/shared-types.d.cts +131 -0
- package/dist/api/shared-types.d.cts.map +1 -0
- package/dist/api/shared-types.d.mts +131 -0
- package/dist/api/shared-types.d.mts.map +1 -0
- package/dist/api/shared-types.mjs +87 -0
- package/dist/api/shared-types.mjs.map +1 -0
- package/dist/api/test-utils.cjs +70 -0
- package/dist/api/test-utils.cjs.map +1 -0
- package/dist/api/test-utils.d.cts +30 -0
- package/dist/api/test-utils.d.cts.map +1 -0
- package/dist/api/test-utils.d.mts +30 -0
- package/dist/api/test-utils.d.mts.map +1 -0
- package/dist/api/test-utils.mjs +64 -0
- package/dist/api/test-utils.mjs.map +1 -0
- package/dist/api/token/client.cjs +342 -0
- package/dist/api/token/client.cjs.map +1 -0
- package/dist/api/token/client.d.cts +193 -0
- package/dist/api/token/client.d.cts.map +1 -0
- package/dist/api/token/client.d.mts +193 -0
- package/dist/api/token/client.d.mts.map +1 -0
- package/dist/api/token/client.mjs +338 -0
- package/dist/api/token/client.mjs.map +1 -0
- package/dist/api/token/index.cjs +9 -0
- package/dist/api/token/index.cjs.map +1 -0
- package/dist/api/token/index.d.cts +6 -0
- package/dist/api/token/index.d.cts.map +1 -0
- package/dist/api/token/index.d.mts +6 -0
- package/dist/api/token/index.d.mts.map +1 -0
- package/dist/api/token/index.mjs +5 -0
- package/dist/api/token/index.mjs.map +1 -0
- package/dist/api/token/types.cjs +7 -0
- package/dist/api/token/types.cjs.map +1 -0
- package/dist/api/token/types.d.cts +75 -0
- package/dist/api/token/types.d.cts.map +1 -0
- package/dist/api/token/types.d.mts +75 -0
- package/dist/api/token/types.d.mts.map +1 -0
- package/dist/api/token/types.mjs +6 -0
- package/dist/api/token/types.mjs.map +1 -0
- package/dist/api/tokens/client.cjs +91 -0
- package/dist/api/tokens/client.cjs.map +1 -0
- package/dist/api/tokens/client.d.cts +45 -0
- package/dist/api/tokens/client.d.cts.map +1 -0
- package/dist/api/tokens/client.d.mts +45 -0
- package/dist/api/tokens/client.d.mts.map +1 -0
- package/dist/api/tokens/client.mjs +87 -0
- package/dist/api/tokens/client.mjs.map +1 -0
- package/dist/api/tokens/index.cjs +9 -0
- package/dist/api/tokens/index.cjs.map +1 -0
- package/dist/api/tokens/index.d.cts +6 -0
- package/dist/api/tokens/index.d.cts.map +1 -0
- package/dist/api/tokens/index.d.mts +6 -0
- package/dist/api/tokens/index.d.mts.map +1 -0
- package/dist/api/tokens/index.mjs +5 -0
- package/dist/api/tokens/index.mjs.map +1 -0
- package/dist/api/tokens/types.cjs +7 -0
- package/dist/api/tokens/types.cjs.map +1 -0
- package/dist/api/tokens/types.d.cts +83 -0
- package/dist/api/tokens/types.d.cts.map +1 -0
- package/dist/api/tokens/types.d.mts +83 -0
- package/dist/api/tokens/types.d.mts.map +1 -0
- package/dist/api/tokens/types.mjs +6 -0
- package/dist/api/tokens/types.mjs.map +1 -0
- package/dist/index.cjs +33 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +6 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +21 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -12
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token API Client - token.api.cx.metamask.io
|
|
3
|
+
*
|
|
4
|
+
* Handles all token-related API calls including:
|
|
5
|
+
* - Networks
|
|
6
|
+
* - Token lists
|
|
7
|
+
* - Token metadata
|
|
8
|
+
* - Token descriptions
|
|
9
|
+
* - Trending tokens
|
|
10
|
+
* - Top gainers/popular tokens
|
|
11
|
+
* - Top assets
|
|
12
|
+
* - Occurrence floors
|
|
13
|
+
*/
|
|
14
|
+
import { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from "../base-client.mjs";
|
|
15
|
+
/**
|
|
16
|
+
* Token API Client.
|
|
17
|
+
* Provides methods for interacting with the Token API.
|
|
18
|
+
*/
|
|
19
|
+
export class TokenApiClient extends BaseApiClient {
|
|
20
|
+
// ==========================================================================
|
|
21
|
+
// CACHE MANAGEMENT
|
|
22
|
+
// ==========================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Invalidate all token API queries.
|
|
25
|
+
* Note: This only invalidates queries from token.api.cx.metamask.io,
|
|
26
|
+
* not from tokens.api.cx.metamask.io (use TokensApiClient.invalidateTokens() for that).
|
|
27
|
+
*/
|
|
28
|
+
async invalidateToken() {
|
|
29
|
+
await this.queryClient.invalidateQueries({
|
|
30
|
+
queryKey: ['token'],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// ==========================================================================
|
|
34
|
+
// NETWORKS
|
|
35
|
+
// ==========================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Get all networks.
|
|
38
|
+
*
|
|
39
|
+
* @param options - Fetch options including cache settings.
|
|
40
|
+
* @returns Array of network info.
|
|
41
|
+
*/
|
|
42
|
+
async fetchNetworks(options) {
|
|
43
|
+
return this.queryClient.fetchQuery({
|
|
44
|
+
queryKey: ['token', 'networks'],
|
|
45
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, '/networks', { signal }),
|
|
46
|
+
staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,
|
|
47
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get network by chain ID.
|
|
52
|
+
*
|
|
53
|
+
* @param chainId - The chain ID.
|
|
54
|
+
* @param options - Fetch options including cache settings.
|
|
55
|
+
* @returns The network info.
|
|
56
|
+
*/
|
|
57
|
+
async fetchNetworkByChainId(chainId, options) {
|
|
58
|
+
return this.queryClient.fetchQuery({
|
|
59
|
+
queryKey: ['token', 'networkByChainId', chainId],
|
|
60
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, `/networks/${chainId}`, {
|
|
61
|
+
signal,
|
|
62
|
+
}),
|
|
63
|
+
staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,
|
|
64
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// ==========================================================================
|
|
68
|
+
// TOKEN LIST
|
|
69
|
+
// ==========================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Get token list for a chain.
|
|
72
|
+
*
|
|
73
|
+
* @param chainId - The chain ID.
|
|
74
|
+
* @param queryOptions - Query options.
|
|
75
|
+
* @param queryOptions.includeTokenFees - Include token fees data.
|
|
76
|
+
* @param queryOptions.includeAssetType - Include asset type data.
|
|
77
|
+
* @param queryOptions.includeAggregators - Include aggregators data.
|
|
78
|
+
* @param queryOptions.includeERC20Permit - Include ERC20 permit data.
|
|
79
|
+
* @param queryOptions.includeOccurrences - Include occurrences data.
|
|
80
|
+
* @param queryOptions.includeStorage - Include storage data.
|
|
81
|
+
* @param queryOptions.includeIconUrl - Include icon URL.
|
|
82
|
+
* @param queryOptions.includeAddress - Include address.
|
|
83
|
+
* @param queryOptions.includeName - Include name.
|
|
84
|
+
* @param options - Fetch options including cache settings.
|
|
85
|
+
* @returns Array of token metadata.
|
|
86
|
+
*/
|
|
87
|
+
async fetchTokenList(chainId, queryOptions, options) {
|
|
88
|
+
return this.queryClient.fetchQuery({
|
|
89
|
+
queryKey: ['token', 'tokenList', { chainId, options: queryOptions }],
|
|
90
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, `/tokens/${chainId}`, {
|
|
91
|
+
signal,
|
|
92
|
+
params: {
|
|
93
|
+
includeTokenFees: queryOptions?.includeTokenFees,
|
|
94
|
+
includeAssetType: queryOptions?.includeAssetType,
|
|
95
|
+
includeAggregators: queryOptions?.includeAggregators,
|
|
96
|
+
includeERC20Permit: queryOptions?.includeERC20Permit,
|
|
97
|
+
includeOccurrences: queryOptions?.includeOccurrences,
|
|
98
|
+
includeStorage: queryOptions?.includeStorage,
|
|
99
|
+
includeIconUrl: queryOptions?.includeIconUrl,
|
|
100
|
+
includeAddress: queryOptions?.includeAddress,
|
|
101
|
+
includeName: queryOptions?.includeName,
|
|
102
|
+
},
|
|
103
|
+
}),
|
|
104
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_LIST,
|
|
105
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// ==========================================================================
|
|
109
|
+
// TOKEN METADATA
|
|
110
|
+
// ==========================================================================
|
|
111
|
+
/**
|
|
112
|
+
* Get token metadata by address.
|
|
113
|
+
*
|
|
114
|
+
* @param chainId - The chain ID.
|
|
115
|
+
* @param tokenAddress - The token address.
|
|
116
|
+
* @param queryOptions - Query options.
|
|
117
|
+
* @param queryOptions.includeTokenFees - Include token fees data.
|
|
118
|
+
* @param queryOptions.includeAssetType - Include asset type data.
|
|
119
|
+
* @param queryOptions.includeAggregators - Include aggregators data.
|
|
120
|
+
* @param queryOptions.includeERC20Permit - Include ERC20 permit data.
|
|
121
|
+
* @param queryOptions.includeOccurrences - Include occurrences data.
|
|
122
|
+
* @param queryOptions.includeStorage - Include storage data.
|
|
123
|
+
* @param queryOptions.includeIconUrl - Include icon URL.
|
|
124
|
+
* @param queryOptions.includeAddress - Include address.
|
|
125
|
+
* @param queryOptions.includeName - Include name.
|
|
126
|
+
* @param options - Fetch options including cache settings.
|
|
127
|
+
* @returns The token metadata or undefined.
|
|
128
|
+
*/
|
|
129
|
+
async fetchV1TokenMetadata(chainId, tokenAddress, queryOptions, options) {
|
|
130
|
+
try {
|
|
131
|
+
return await this.queryClient.fetchQuery({
|
|
132
|
+
queryKey: [
|
|
133
|
+
'token',
|
|
134
|
+
'v1Metadata',
|
|
135
|
+
{ chainId, tokenAddress, options: queryOptions },
|
|
136
|
+
],
|
|
137
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, `/token/${chainId}`, {
|
|
138
|
+
signal,
|
|
139
|
+
params: {
|
|
140
|
+
address: tokenAddress,
|
|
141
|
+
includeTokenFees: queryOptions?.includeTokenFees,
|
|
142
|
+
includeAssetType: queryOptions?.includeAssetType,
|
|
143
|
+
includeAggregators: queryOptions?.includeAggregators,
|
|
144
|
+
includeERC20Permit: queryOptions?.includeERC20Permit,
|
|
145
|
+
includeOccurrences: queryOptions?.includeOccurrences,
|
|
146
|
+
includeStorage: queryOptions?.includeStorage,
|
|
147
|
+
includeIconUrl: queryOptions?.includeIconUrl,
|
|
148
|
+
includeAddress: queryOptions?.includeAddress,
|
|
149
|
+
includeName: queryOptions?.includeName,
|
|
150
|
+
},
|
|
151
|
+
}),
|
|
152
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,
|
|
153
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get token description.
|
|
162
|
+
*
|
|
163
|
+
* @param chainId - The chain ID.
|
|
164
|
+
* @param tokenAddress - The token address.
|
|
165
|
+
* @param options - Fetch options including cache settings.
|
|
166
|
+
* @returns The token description or undefined.
|
|
167
|
+
*/
|
|
168
|
+
async fetchTokenDescription(chainId, tokenAddress, options) {
|
|
169
|
+
try {
|
|
170
|
+
return await this.queryClient.fetchQuery({
|
|
171
|
+
queryKey: ['token', 'tokenDescription', chainId, tokenAddress],
|
|
172
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, `/token/${chainId}/description`, {
|
|
173
|
+
signal,
|
|
174
|
+
params: { address: tokenAddress },
|
|
175
|
+
}),
|
|
176
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,
|
|
177
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// ==========================================================================
|
|
185
|
+
// TRENDING & TOP TOKENS
|
|
186
|
+
// ==========================================================================
|
|
187
|
+
/**
|
|
188
|
+
* Get trending tokens (v3 endpoint).
|
|
189
|
+
*
|
|
190
|
+
* @param chainIds - Array of chain IDs.
|
|
191
|
+
* @param queryOptions - Query options.
|
|
192
|
+
* @param queryOptions.sortBy - Sort option.
|
|
193
|
+
* @param queryOptions.minLiquidity - Minimum liquidity filter.
|
|
194
|
+
* @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.
|
|
195
|
+
* @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.
|
|
196
|
+
* @param queryOptions.minMarketCap - Minimum market cap filter.
|
|
197
|
+
* @param queryOptions.maxMarketCap - Maximum market cap filter.
|
|
198
|
+
* @param options - Fetch options including cache settings.
|
|
199
|
+
* @returns Array of trending tokens.
|
|
200
|
+
*/
|
|
201
|
+
async fetchV3TrendingTokens(chainIds, queryOptions, options) {
|
|
202
|
+
return this.queryClient.fetchQuery({
|
|
203
|
+
queryKey: [
|
|
204
|
+
'token',
|
|
205
|
+
'v3Trending',
|
|
206
|
+
{ chainIds: [...chainIds].sort(), options: queryOptions },
|
|
207
|
+
],
|
|
208
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, '/v3/tokens/trending', {
|
|
209
|
+
signal,
|
|
210
|
+
params: {
|
|
211
|
+
chainIds,
|
|
212
|
+
sort: queryOptions?.sortBy,
|
|
213
|
+
minLiquidity: queryOptions?.minLiquidity,
|
|
214
|
+
minVolume24hUsd: queryOptions?.minVolume24hUsd,
|
|
215
|
+
maxVolume24hUsd: queryOptions?.maxVolume24hUsd,
|
|
216
|
+
minMarketCap: queryOptions?.minMarketCap,
|
|
217
|
+
maxMarketCap: queryOptions?.maxMarketCap,
|
|
218
|
+
},
|
|
219
|
+
}),
|
|
220
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,
|
|
221
|
+
gcTime: options?.gcTime ?? GC_TIMES.SHORT,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get top gainers/losers (v3 endpoint).
|
|
226
|
+
*
|
|
227
|
+
* @param chainIds - Array of chain IDs.
|
|
228
|
+
* @param queryOptions - Query options.
|
|
229
|
+
* @param queryOptions.sort - Sort option.
|
|
230
|
+
* @param queryOptions.blockRegion - Region filter (global/us).
|
|
231
|
+
* @param queryOptions.minLiquidity - Minimum liquidity filter.
|
|
232
|
+
* @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.
|
|
233
|
+
* @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.
|
|
234
|
+
* @param queryOptions.minMarketCap - Minimum market cap filter.
|
|
235
|
+
* @param queryOptions.maxMarketCap - Maximum market cap filter.
|
|
236
|
+
* @param options - Fetch options including cache settings.
|
|
237
|
+
* @returns Array of top gainer tokens.
|
|
238
|
+
*/
|
|
239
|
+
async fetchV3TopGainers(chainIds, queryOptions, options) {
|
|
240
|
+
return this.queryClient.fetchQuery({
|
|
241
|
+
queryKey: [
|
|
242
|
+
'token',
|
|
243
|
+
'v3TopGainers',
|
|
244
|
+
{ chainIds: [...chainIds].sort(), options: queryOptions },
|
|
245
|
+
],
|
|
246
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, '/v3/tokens/top-gainers', {
|
|
247
|
+
signal,
|
|
248
|
+
params: {
|
|
249
|
+
chainIds,
|
|
250
|
+
sort: queryOptions?.sort,
|
|
251
|
+
blockRegion: queryOptions?.blockRegion,
|
|
252
|
+
minLiquidity: queryOptions?.minLiquidity,
|
|
253
|
+
minVolume24hUsd: queryOptions?.minVolume24hUsd,
|
|
254
|
+
maxVolume24hUsd: queryOptions?.maxVolume24hUsd,
|
|
255
|
+
minMarketCap: queryOptions?.minMarketCap,
|
|
256
|
+
maxMarketCap: queryOptions?.maxMarketCap,
|
|
257
|
+
},
|
|
258
|
+
}),
|
|
259
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,
|
|
260
|
+
gcTime: options?.gcTime ?? GC_TIMES.SHORT,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get popular tokens (v3 endpoint).
|
|
265
|
+
*
|
|
266
|
+
* @param chainIds - Array of chain IDs.
|
|
267
|
+
* @param queryOptions - Query options.
|
|
268
|
+
* @param queryOptions.blockRegion - Region filter (global/us).
|
|
269
|
+
* @param queryOptions.minLiquidity - Minimum liquidity filter.
|
|
270
|
+
* @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.
|
|
271
|
+
* @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.
|
|
272
|
+
* @param queryOptions.minMarketCap - Minimum market cap filter.
|
|
273
|
+
* @param queryOptions.maxMarketCap - Maximum market cap filter.
|
|
274
|
+
* @param options - Fetch options including cache settings.
|
|
275
|
+
* @returns Array of popular tokens.
|
|
276
|
+
*/
|
|
277
|
+
async fetchV3PopularTokens(chainIds, queryOptions, options) {
|
|
278
|
+
return this.queryClient.fetchQuery({
|
|
279
|
+
queryKey: [
|
|
280
|
+
'token',
|
|
281
|
+
'v3Popular',
|
|
282
|
+
{ chainIds: [...chainIds].sort(), options: queryOptions },
|
|
283
|
+
],
|
|
284
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, '/v3/tokens/popular', {
|
|
285
|
+
signal,
|
|
286
|
+
params: {
|
|
287
|
+
chainIds,
|
|
288
|
+
blockRegion: queryOptions?.blockRegion,
|
|
289
|
+
minLiquidity: queryOptions?.minLiquidity,
|
|
290
|
+
minVolume24hUsd: queryOptions?.minVolume24hUsd,
|
|
291
|
+
maxVolume24hUsd: queryOptions?.maxVolume24hUsd,
|
|
292
|
+
minMarketCap: queryOptions?.minMarketCap,
|
|
293
|
+
maxMarketCap: queryOptions?.maxMarketCap,
|
|
294
|
+
},
|
|
295
|
+
}),
|
|
296
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,
|
|
297
|
+
gcTime: options?.gcTime ?? GC_TIMES.SHORT,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
// ==========================================================================
|
|
301
|
+
// TOP ASSETS
|
|
302
|
+
// ==========================================================================
|
|
303
|
+
/**
|
|
304
|
+
* Get top assets for a chain.
|
|
305
|
+
*
|
|
306
|
+
* @param chainId - The chain ID.
|
|
307
|
+
* @param options - Fetch options including cache settings.
|
|
308
|
+
* @returns Array of top assets.
|
|
309
|
+
*/
|
|
310
|
+
async fetchTopAssets(chainId, options) {
|
|
311
|
+
return this.queryClient.fetchQuery({
|
|
312
|
+
queryKey: ['token', 'topAssets', chainId],
|
|
313
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, `/topAssets/${chainId}`, {
|
|
314
|
+
signal,
|
|
315
|
+
}),
|
|
316
|
+
staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,
|
|
317
|
+
gcTime: options?.gcTime ?? GC_TIMES.SHORT,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
// ==========================================================================
|
|
321
|
+
// UTILITY
|
|
322
|
+
// ==========================================================================
|
|
323
|
+
/**
|
|
324
|
+
* Get suggested occurrence floors for all chains.
|
|
325
|
+
*
|
|
326
|
+
* @param options - Fetch options including cache settings.
|
|
327
|
+
* @returns The suggested occurrence floors response.
|
|
328
|
+
*/
|
|
329
|
+
async fetchV1SuggestedOccurrenceFloors(options) {
|
|
330
|
+
return this.queryClient.fetchQuery({
|
|
331
|
+
queryKey: ['token', 'v1SuggestedOccurrenceFloors'],
|
|
332
|
+
queryFn: ({ signal }) => this.fetch(API_URLS.TOKEN, '/v1/suggestedOccurrenceFloors', { signal }),
|
|
333
|
+
staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,
|
|
334
|
+
gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.mjs","sourceRoot":"","sources":["../../../src/api/token/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Token API Client - token.api.cx.metamask.io\n *\n * Handles all token-related API calls including:\n * - Networks\n * - Token lists\n * - Token metadata\n * - Token descriptions\n * - Trending tokens\n * - Top gainers/popular tokens\n * - Top assets\n * - Occurrence floors\n */\n\nimport type { QueryFunctionContext } from '@tanstack/query-core';\n\nimport type {\n TokenMetadata,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingToken,\n TrendingSortOption,\n TopGainersSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n} from './types';\nimport { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client';\nimport type { FetchOptions } from '../shared-types';\n\n/**\n * Token API Client.\n * Provides methods for interacting with the Token API.\n */\nexport class TokenApiClient extends BaseApiClient {\n // ==========================================================================\n // CACHE MANAGEMENT\n // ==========================================================================\n\n /**\n * Invalidate all token API queries.\n * Note: This only invalidates queries from token.api.cx.metamask.io,\n * not from tokens.api.cx.metamask.io (use TokensApiClient.invalidateTokens() for that).\n */\n async invalidateToken(): Promise<void> {\n await this.queryClient.invalidateQueries({\n queryKey: ['token'],\n });\n }\n\n // ==========================================================================\n // NETWORKS\n // ==========================================================================\n\n /**\n * Get all networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns Array of network info.\n */\n async fetchNetworks(options?: FetchOptions): Promise<NetworkInfo[]> {\n return this.queryClient.fetchQuery({\n queryKey: ['token', 'networks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo[]>(API_URLS.TOKEN, '/networks', { signal }),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n\n /**\n * Get network by chain ID.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns The network info.\n */\n async fetchNetworkByChainId(\n chainId: number,\n options?: FetchOptions,\n ): Promise<NetworkInfo> {\n return this.queryClient.fetchQuery({\n queryKey: ['token', 'networkByChainId', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo>(API_URLS.TOKEN, `/networks/${chainId}`, {\n signal,\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n\n // ==========================================================================\n // TOKEN LIST\n // ==========================================================================\n\n /**\n * Get token list for a chain.\n *\n * @param chainId - The chain ID.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Include token fees data.\n * @param queryOptions.includeAssetType - Include asset type data.\n * @param queryOptions.includeAggregators - Include aggregators data.\n * @param queryOptions.includeERC20Permit - Include ERC20 permit data.\n * @param queryOptions.includeOccurrences - Include occurrences data.\n * @param queryOptions.includeStorage - Include storage data.\n * @param queryOptions.includeIconUrl - Include icon URL.\n * @param queryOptions.includeAddress - Include address.\n * @param queryOptions.includeName - Include name.\n * @param options - Fetch options including cache settings.\n * @returns Array of token metadata.\n */\n async fetchTokenList(\n chainId: number,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TokenMetadata[]> {\n return this.queryClient.fetchQuery({\n queryKey: ['token', 'tokenList', { chainId, options: queryOptions }],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenMetadata[]>(API_URLS.TOKEN, `/tokens/${chainId}`, {\n signal,\n params: {\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n },\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_LIST,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n\n // ==========================================================================\n // TOKEN METADATA\n // ==========================================================================\n\n /**\n * Get token metadata by address.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Include token fees data.\n * @param queryOptions.includeAssetType - Include asset type data.\n * @param queryOptions.includeAggregators - Include aggregators data.\n * @param queryOptions.includeERC20Permit - Include ERC20 permit data.\n * @param queryOptions.includeOccurrences - Include occurrences data.\n * @param queryOptions.includeStorage - Include storage data.\n * @param queryOptions.includeIconUrl - Include icon URL.\n * @param queryOptions.includeAddress - Include address.\n * @param queryOptions.includeName - Include name.\n * @param options - Fetch options including cache settings.\n * @returns The token metadata or undefined.\n */\n async fetchV1TokenMetadata(\n chainId: number,\n tokenAddress: string,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TokenMetadata | undefined> {\n try {\n return await this.queryClient.fetchQuery({\n queryKey: [\n 'token',\n 'v1Metadata',\n { chainId, tokenAddress, options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenMetadata>(API_URLS.TOKEN, `/token/${chainId}`, {\n signal,\n params: {\n address: tokenAddress,\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n },\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n } catch {\n return undefined;\n }\n }\n\n /**\n * Get token description.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param options - Fetch options including cache settings.\n * @returns The token description or undefined.\n */\n async fetchTokenDescription(\n chainId: number,\n tokenAddress: string,\n options?: FetchOptions,\n ): Promise<V1TokenDescriptionResponse | undefined> {\n try {\n return await this.queryClient.fetchQuery({\n queryKey: ['token', 'tokenDescription', chainId, tokenAddress],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1TokenDescriptionResponse>(\n API_URLS.TOKEN,\n `/token/${chainId}/description`,\n {\n signal,\n params: { address: tokenAddress },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n } catch {\n return undefined;\n }\n }\n\n // ==========================================================================\n // TRENDING & TOP TOKENS\n // ==========================================================================\n\n /**\n * Get trending tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sortBy - Sort option.\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of trending tokens.\n */\n async fetchV3TrendingTokens(\n chainIds: string[],\n queryOptions?: {\n sortBy?: TrendingSortOption;\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'token',\n 'v3Trending',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(API_URLS.TOKEN, '/v3/tokens/trending', {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sortBy,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n });\n }\n\n /**\n * Get top gainers/losers (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sort - Sort option.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of top gainer tokens.\n */\n async fetchV3TopGainers(\n chainIds: string[],\n queryOptions?: {\n sort?: TopGainersSortOption;\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'token',\n 'v3TopGainers',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(API_URLS.TOKEN, '/v3/tokens/top-gainers', {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sort,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n });\n }\n\n /**\n * Get popular tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of popular tokens.\n */\n async fetchV3PopularTokens(\n chainIds: string[],\n queryOptions?: {\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'token',\n 'v3Popular',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(API_URLS.TOKEN, '/v3/tokens/popular', {\n signal,\n params: {\n chainIds,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n });\n }\n\n // ==========================================================================\n // TOP ASSETS\n // ==========================================================================\n\n /**\n * Get top assets for a chain.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns Array of top assets.\n */\n async fetchTopAssets(\n chainId: number,\n options?: FetchOptions,\n ): Promise<TopAsset[]> {\n return this.queryClient.fetchQuery({\n queryKey: ['token', 'topAssets', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TopAsset[]>(API_URLS.TOKEN, `/topAssets/${chainId}`, {\n signal,\n }),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n });\n }\n\n // ==========================================================================\n // UTILITY\n // ==========================================================================\n\n /**\n * Get suggested occurrence floors for all chains.\n *\n * @param options - Fetch options including cache settings.\n * @returns The suggested occurrence floors response.\n */\n async fetchV1SuggestedOccurrenceFloors(\n options?: FetchOptions,\n ): Promise<V1SuggestedOccurrenceFloorsResponse> {\n return this.queryClient.fetchQuery({\n queryKey: ['token', 'v1SuggestedOccurrenceFloors'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1SuggestedOccurrenceFloorsResponse>(\n API_URLS.TOKEN,\n '/v1/suggestedOccurrenceFloors',\n { signal },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token API barrel export.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TokenApiClient = void 0;
|
|
7
|
+
var client_1 = require("./client.cjs");
|
|
8
|
+
Object.defineProperty(exports, "TokenApiClient", { enumerable: true, get: function () { return client_1.TokenApiClient; } });
|
|
9
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAA0C;AAAjC,wGAAA,cAAc,OAAA","sourcesContent":["/**\n * Token API barrel export.\n */\n\nexport { TokenApiClient } from './client';\nexport type {\n TokenMetadata,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n} from './types';\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token API barrel export.
|
|
3
|
+
*/
|
|
4
|
+
export { TokenApiClient } from "./client.cjs";
|
|
5
|
+
export type { TokenMetadata, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, } from "./types.cjs";
|
|
6
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAC1C,YAAY,EACV,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,GACpC,oBAAgB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token API barrel export.
|
|
3
|
+
*/
|
|
4
|
+
export { TokenApiClient } from "./client.mjs";
|
|
5
|
+
export type { TokenMetadata, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, } from "./types.mjs";
|
|
6
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAC1C,YAAY,EACV,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,GACpC,oBAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,qBAAiB","sourcesContent":["/**\n * Token API barrel export.\n */\n\nexport { TokenApiClient } from './client';\nexport type {\n TokenMetadata,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n} from './types';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * Token API types for the API Platform Client.\n * API: token.api.cx.metamask.io\n */\n\n// ============================================================================\n// TOKEN METADATA TYPES\n// ============================================================================\n\n/**\n * Token metadata from Token API v1 /tokens/{chainId} endpoint\n */\nexport type TokenMetadata = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n iconUrl?: string;\n aggregators?: string[];\n occurrences?: number;\n};\n\n/** Token description response */\nexport type V1TokenDescriptionResponse = {\n description: string;\n};\n\n// ============================================================================\n// NETWORK TYPES\n// ============================================================================\n\n/** Network info */\nexport type NetworkInfo = {\n active: boolean;\n chainId: number;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n address: string;\n };\n iconUrl?: string;\n blockExplorerUrl?: string;\n networkType?: string;\n tokenSources?: string[];\n};\n\n// ============================================================================\n// TOP ASSETS TYPES\n// ============================================================================\n\n/** Top asset */\nexport type TopAsset = {\n address: string;\n symbol: string;\n};\n\n// ============================================================================\n// TRENDING TOKENS TYPES\n// ============================================================================\n\n/**\n * Sort options for trending tokens (v3)\n */\nexport type TrendingSortBy =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n/**\n * Trending token data from Token API v3 /tokens/trending endpoint\n */\nexport type TrendingToken = {\n assetId: string;\n name: string;\n symbol: string;\n decimals: number;\n price: string;\n aggregatedUsdVolume: number;\n marketCap: number;\n priceChangePct?: {\n m5?: string;\n m15?: string;\n m30?: string;\n h1?: string;\n h6?: string;\n h24?: string;\n };\n labels?: string[];\n};\n\n/** Top gainers sort options */\nexport type TopGainersSortOption =\n | 'm5_price_change_percentage_desc'\n | 'h1_price_change_percentage_desc'\n | 'h6_price_change_percentage_desc'\n | 'h24_price_change_percentage_desc'\n | 'm5_price_change_percentage_asc'\n | 'h1_price_change_percentage_asc'\n | 'h6_price_change_percentage_asc'\n | 'h24_price_change_percentage_asc';\n\n/** Trending sort options */\nexport type TrendingSortOption =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// UTILITY TYPES\n// ============================================================================\n\n/** Suggested occurrence floors response */\nexport type V1SuggestedOccurrenceFloorsResponse = {\n [chainId: string]: number;\n};\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token API types for the API Platform Client.
|
|
3
|
+
* API: token.api.cx.metamask.io
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Token metadata from Token API v1 /tokens/{chainId} endpoint
|
|
7
|
+
*/
|
|
8
|
+
export type TokenMetadata = {
|
|
9
|
+
address: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
decimals: number;
|
|
12
|
+
name: string;
|
|
13
|
+
iconUrl?: string;
|
|
14
|
+
aggregators?: string[];
|
|
15
|
+
occurrences?: number;
|
|
16
|
+
};
|
|
17
|
+
/** Token description response */
|
|
18
|
+
export type V1TokenDescriptionResponse = {
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
/** Network info */
|
|
22
|
+
export type NetworkInfo = {
|
|
23
|
+
active: boolean;
|
|
24
|
+
chainId: number;
|
|
25
|
+
chainName: string;
|
|
26
|
+
nativeCurrency: {
|
|
27
|
+
name: string;
|
|
28
|
+
symbol: string;
|
|
29
|
+
decimals: number;
|
|
30
|
+
address: string;
|
|
31
|
+
};
|
|
32
|
+
iconUrl?: string;
|
|
33
|
+
blockExplorerUrl?: string;
|
|
34
|
+
networkType?: string;
|
|
35
|
+
tokenSources?: string[];
|
|
36
|
+
};
|
|
37
|
+
/** Top asset */
|
|
38
|
+
export type TopAsset = {
|
|
39
|
+
address: string;
|
|
40
|
+
symbol: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Sort options for trending tokens (v3)
|
|
44
|
+
*/
|
|
45
|
+
export type TrendingSortBy = 'm5_trending' | 'h1_trending' | 'h6_trending' | 'h24_trending';
|
|
46
|
+
/**
|
|
47
|
+
* Trending token data from Token API v3 /tokens/trending endpoint
|
|
48
|
+
*/
|
|
49
|
+
export type TrendingToken = {
|
|
50
|
+
assetId: string;
|
|
51
|
+
name: string;
|
|
52
|
+
symbol: string;
|
|
53
|
+
decimals: number;
|
|
54
|
+
price: string;
|
|
55
|
+
aggregatedUsdVolume: number;
|
|
56
|
+
marketCap: number;
|
|
57
|
+
priceChangePct?: {
|
|
58
|
+
m5?: string;
|
|
59
|
+
m15?: string;
|
|
60
|
+
m30?: string;
|
|
61
|
+
h1?: string;
|
|
62
|
+
h6?: string;
|
|
63
|
+
h24?: string;
|
|
64
|
+
};
|
|
65
|
+
labels?: string[];
|
|
66
|
+
};
|
|
67
|
+
/** Top gainers sort options */
|
|
68
|
+
export type TopGainersSortOption = 'm5_price_change_percentage_desc' | 'h1_price_change_percentage_desc' | 'h6_price_change_percentage_desc' | 'h24_price_change_percentage_desc' | 'm5_price_change_percentage_asc' | 'h1_price_change_percentage_asc' | 'h6_price_change_percentage_asc' | 'h24_price_change_percentage_asc';
|
|
69
|
+
/** Trending sort options */
|
|
70
|
+
export type TrendingSortOption = 'm5_trending' | 'h1_trending' | 'h6_trending' | 'h24_trending';
|
|
71
|
+
/** Suggested occurrence floors response */
|
|
72
|
+
export type V1SuggestedOccurrenceFloorsResponse = {
|
|
73
|
+
[chainId: string]: number;
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,mBAAmB;AACnB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAMF,gBAAgB;AAChB,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,aAAa,GACb,aAAa,GACb,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,MAAM,oBAAoB,GAC5B,iCAAiC,GACjC,iCAAiC,GACjC,iCAAiC,GACjC,kCAAkC,GAClC,gCAAgC,GAChC,gCAAgC,GAChC,gCAAgC,GAChC,iCAAiC,CAAC;AAEtC,4BAA4B;AAC5B,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GACb,aAAa,GACb,aAAa,GACb,cAAc,CAAC;AAMnB,2CAA2C;AAC3C,MAAM,MAAM,mCAAmC,GAAG;IAChD,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token API types for the API Platform Client.
|
|
3
|
+
* API: token.api.cx.metamask.io
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Token metadata from Token API v1 /tokens/{chainId} endpoint
|
|
7
|
+
*/
|
|
8
|
+
export type TokenMetadata = {
|
|
9
|
+
address: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
decimals: number;
|
|
12
|
+
name: string;
|
|
13
|
+
iconUrl?: string;
|
|
14
|
+
aggregators?: string[];
|
|
15
|
+
occurrences?: number;
|
|
16
|
+
};
|
|
17
|
+
/** Token description response */
|
|
18
|
+
export type V1TokenDescriptionResponse = {
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
/** Network info */
|
|
22
|
+
export type NetworkInfo = {
|
|
23
|
+
active: boolean;
|
|
24
|
+
chainId: number;
|
|
25
|
+
chainName: string;
|
|
26
|
+
nativeCurrency: {
|
|
27
|
+
name: string;
|
|
28
|
+
symbol: string;
|
|
29
|
+
decimals: number;
|
|
30
|
+
address: string;
|
|
31
|
+
};
|
|
32
|
+
iconUrl?: string;
|
|
33
|
+
blockExplorerUrl?: string;
|
|
34
|
+
networkType?: string;
|
|
35
|
+
tokenSources?: string[];
|
|
36
|
+
};
|
|
37
|
+
/** Top asset */
|
|
38
|
+
export type TopAsset = {
|
|
39
|
+
address: string;
|
|
40
|
+
symbol: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Sort options for trending tokens (v3)
|
|
44
|
+
*/
|
|
45
|
+
export type TrendingSortBy = 'm5_trending' | 'h1_trending' | 'h6_trending' | 'h24_trending';
|
|
46
|
+
/**
|
|
47
|
+
* Trending token data from Token API v3 /tokens/trending endpoint
|
|
48
|
+
*/
|
|
49
|
+
export type TrendingToken = {
|
|
50
|
+
assetId: string;
|
|
51
|
+
name: string;
|
|
52
|
+
symbol: string;
|
|
53
|
+
decimals: number;
|
|
54
|
+
price: string;
|
|
55
|
+
aggregatedUsdVolume: number;
|
|
56
|
+
marketCap: number;
|
|
57
|
+
priceChangePct?: {
|
|
58
|
+
m5?: string;
|
|
59
|
+
m15?: string;
|
|
60
|
+
m30?: string;
|
|
61
|
+
h1?: string;
|
|
62
|
+
h6?: string;
|
|
63
|
+
h24?: string;
|
|
64
|
+
};
|
|
65
|
+
labels?: string[];
|
|
66
|
+
};
|
|
67
|
+
/** Top gainers sort options */
|
|
68
|
+
export type TopGainersSortOption = 'm5_price_change_percentage_desc' | 'h1_price_change_percentage_desc' | 'h6_price_change_percentage_desc' | 'h24_price_change_percentage_desc' | 'm5_price_change_percentage_asc' | 'h1_price_change_percentage_asc' | 'h6_price_change_percentage_asc' | 'h24_price_change_percentage_asc';
|
|
69
|
+
/** Trending sort options */
|
|
70
|
+
export type TrendingSortOption = 'm5_trending' | 'h1_trending' | 'h6_trending' | 'h24_trending';
|
|
71
|
+
/** Suggested occurrence floors response */
|
|
72
|
+
export type V1SuggestedOccurrenceFloorsResponse = {
|
|
73
|
+
[chainId: string]: number;
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,mBAAmB;AACnB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAMF,gBAAgB;AAChB,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,aAAa,GACb,aAAa,GACb,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,MAAM,oBAAoB,GAC5B,iCAAiC,GACjC,iCAAiC,GACjC,iCAAiC,GACjC,kCAAkC,GAClC,gCAAgC,GAChC,gCAAgC,GAChC,gCAAgC,GAChC,iCAAiC,CAAC;AAEtC,4BAA4B;AAC5B,MAAM,MAAM,kBAAkB,GAC1B,aAAa,GACb,aAAa,GACb,aAAa,GACb,cAAc,CAAC;AAMnB,2CAA2C;AAC3C,MAAM,MAAM,mCAAmC,GAAG;IAChD,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Token API types for the API Platform Client.\n * API: token.api.cx.metamask.io\n */\n\n// ============================================================================\n// TOKEN METADATA TYPES\n// ============================================================================\n\n/**\n * Token metadata from Token API v1 /tokens/{chainId} endpoint\n */\nexport type TokenMetadata = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n iconUrl?: string;\n aggregators?: string[];\n occurrences?: number;\n};\n\n/** Token description response */\nexport type V1TokenDescriptionResponse = {\n description: string;\n};\n\n// ============================================================================\n// NETWORK TYPES\n// ============================================================================\n\n/** Network info */\nexport type NetworkInfo = {\n active: boolean;\n chainId: number;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n address: string;\n };\n iconUrl?: string;\n blockExplorerUrl?: string;\n networkType?: string;\n tokenSources?: string[];\n};\n\n// ============================================================================\n// TOP ASSETS TYPES\n// ============================================================================\n\n/** Top asset */\nexport type TopAsset = {\n address: string;\n symbol: string;\n};\n\n// ============================================================================\n// TRENDING TOKENS TYPES\n// ============================================================================\n\n/**\n * Sort options for trending tokens (v3)\n */\nexport type TrendingSortBy =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n/**\n * Trending token data from Token API v3 /tokens/trending endpoint\n */\nexport type TrendingToken = {\n assetId: string;\n name: string;\n symbol: string;\n decimals: number;\n price: string;\n aggregatedUsdVolume: number;\n marketCap: number;\n priceChangePct?: {\n m5?: string;\n m15?: string;\n m30?: string;\n h1?: string;\n h6?: string;\n h24?: string;\n };\n labels?: string[];\n};\n\n/** Top gainers sort options */\nexport type TopGainersSortOption =\n | 'm5_price_change_percentage_desc'\n | 'h1_price_change_percentage_desc'\n | 'h6_price_change_percentage_desc'\n | 'h24_price_change_percentage_desc'\n | 'm5_price_change_percentage_asc'\n | 'h1_price_change_percentage_asc'\n | 'h6_price_change_percentage_asc'\n | 'h24_price_change_percentage_asc';\n\n/** Trending sort options */\nexport type TrendingSortOption =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// UTILITY TYPES\n// ============================================================================\n\n/** Suggested occurrence floors response */\nexport type V1SuggestedOccurrenceFloorsResponse = {\n [chainId: string]: number;\n};\n"]}
|