From 8b0d6b223c03eabee9d3b52f9cccf9797c854047 Mon Sep 17 00:00:00 2001 From: sahar-fehri Date: Wed, 6 May 2026 18:11:57 +0200 Subject: [PATCH 1/3] refactor: make trending token query params extensible with passthrough support --- packages/assets-controllers/src/index.ts | 1 + .../src/token-service.test.ts | 25 ++++- .../assets-controllers/src/token-service.ts | 97 ++++++------------- .../core-backend/src/api/token/client.test.ts | 16 +++ packages/core-backend/src/api/token/client.ts | 53 +++------- packages/core-backend/src/api/token/index.ts | 1 + packages/core-backend/src/api/token/types.ts | 18 ++++ packages/core-backend/src/index.ts | 1 + 8 files changed, 102 insertions(+), 110 deletions(-) diff --git a/packages/assets-controllers/src/index.ts b/packages/assets-controllers/src/index.ts index 8bc2c17247..dda1702b93 100644 --- a/packages/assets-controllers/src/index.ts +++ b/packages/assets-controllers/src/index.ts @@ -292,6 +292,7 @@ export { createFormatters } from './utils/formatters'; export type { SortTrendingBy, TrendingAsset, + TrendingTokensQueryParams, TokenSearchItem, TokenAsset, TokenRwaData, diff --git a/packages/assets-controllers/src/token-service.test.ts b/packages/assets-controllers/src/token-service.test.ts index 7ae819b9a8..ef7b30eda7 100644 --- a/packages/assets-controllers/src/token-service.test.ts +++ b/packages/assets-controllers/src/token-service.test.ts @@ -1162,7 +1162,7 @@ describe('Token service', () => { it('returns the list of trending tokens if the fetch succeeds', async () => { const testChainId = 'eip155:1'; - const sortBy: SortTrendingBy = 'm5_trending'; + const sort: SortTrendingBy = 'm5_trending'; const testMinLiquidity = 1000000; const testMinVolume24hUsd = 1000000; const testMaxVolume24hUsd = 1000000; @@ -1170,14 +1170,14 @@ describe('Token service', () => { const testMaxMarketCap = 1000000; nock(TOKEN_END_POINT_API) .get( - `/v3/tokens/trending?chainIds=${encodeURIComponent(testChainId)}&sort=${sortBy}&minLiquidity=${testMinLiquidity}&minVolume24hUsd=${testMinVolume24hUsd}&maxVolume24hUsd=${testMaxVolume24hUsd}&minMarketCap=${testMinMarketCap}&maxMarketCap=${testMaxMarketCap}&includeRwaData=true&usePriceApiData=true`, + `/v3/tokens/trending?chainIds=${encodeURIComponent(testChainId)}&sort=${sort}&minLiquidity=${testMinLiquidity}&minVolume24hUsd=${testMinVolume24hUsd}&maxVolume24hUsd=${testMaxVolume24hUsd}&minMarketCap=${testMinMarketCap}&maxMarketCap=${testMaxMarketCap}&includeRwaData=true&usePriceApiData=true`, ) .reply(200, sampleTrendingTokens) .persist(); const result = await getTrendingTokens({ chainIds: [testChainId], - sortBy, + sort, minLiquidity: testMinLiquidity, minVolume24hUsd: testMinVolume24hUsd, maxVolume24hUsd: testMaxVolume24hUsd, @@ -1292,7 +1292,7 @@ describe('Token service', () => { const result = await getTrendingTokens({ chainIds: [testChainId], - sortBy: 'h6_trending', + sort: 'h6_trending', minLiquidity: testMinLiquidity, minVolume24hUsd: testMinVolume, includeRwaData: false, @@ -1300,6 +1300,23 @@ describe('Token service', () => { }); expect(result).toStrictEqual(sampleTrendingTokensWithSecurityData); }); + + it('passes unknown query params through to the URL', async () => { + const testChainId = 'eip155:1'; + + nock(TOKEN_END_POINT_API) + .get( + `/v3/tokens/trending?chainIds=${encodeURIComponent(testChainId)}&includeRwaData=true&usePriceApiData=true&vsCurrency=eur`, + ) + .reply(200, sampleTrendingTokens) + .persist(); + + const result = await getTrendingTokens({ + chainIds: [testChainId], + vsCurrency: 'eur', + }); + expect(result).toStrictEqual(sampleTrendingTokens); + }); }); describe('searchTokens with includeTokenSecurityData', () => { diff --git a/packages/assets-controllers/src/token-service.ts b/packages/assets-controllers/src/token-service.ts index 02464f1556..273e051110 100644 --- a/packages/assets-controllers/src/token-service.ts +++ b/packages/assets-controllers/src/token-service.ts @@ -138,24 +138,14 @@ function getTokenAssetsURL(options: { } /** - * Get the trending tokens URL for the given networks and search query. + * Shared query-parameter type for the v3 trending tokens endpoint. * - * @param options - Options for getting trending tokens. - * @param options.chainIds - Array of CAIP format chain IDs (e.g., ['eip155:1', 'eip155:137', 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp']). - * @param options.sort - The sort field. - * @param options.minLiquidity - The minimum liquidity. - * @param options.minVolume24hUsd - The minimum volume 24h in USD. - * @param options.maxVolume24hUsd - The maximum volume 24h in USD. - * @param options.minMarketCap - The minimum market cap. - * @param options.maxMarketCap - The maximum market cap. - * @param options.excludeLabels - Array of labels to exclude (e.g., ['stable_coin', 'blue_chip']). - * @param options.includeRwaData - Optional flag to include RWA data in the results (defaults to false). - * @param options.usePriceApiData - Optional flag to use price API data in the results (defaults to false). - * @param options.includeTokenSecurityData - Optional flag to include token security data in the results (defaults to false). - * @returns The trending tokens URL. + * Known parameters are explicitly typed for autocomplete and documentation. + * The index signature allows new API parameters to pass through without + * requiring a core release — callers can add any additional key/value and + * it will be forwarded as a query parameter. */ -function getTrendingTokensURL(options: { - chainIds: CaipChainId[]; +export type TrendingTokensQueryParams = { sort?: SortTrendingBy; minLiquidity?: number; minVolume24hUsd?: number; @@ -166,11 +156,21 @@ function getTrendingTokensURL(options: { includeRwaData?: boolean; usePriceApiData?: boolean; includeTokenSecurityData?: boolean; -}): string { + [key: string]: string | number | boolean | string[] | undefined; +}; + +/** + * Get the trending tokens URL for the given networks and search query. + * + * @param options - Options bag: `chainIds` (required) plus any query params. + * @returns The trending tokens URL. + */ +function getTrendingTokensURL( + options: { chainIds: CaipChainId[] } & TrendingTokensQueryParams, +): string { const encodedChainIds = options.chainIds .map((id) => encodeURIComponent(id)) .join(','); - // Add the rest of query params if they are defined const queryParams = new URLSearchParams(); const { chainIds, excludeLabels, ...rest } = options; Object.entries(rest).forEach(([key, value]) => { @@ -391,46 +391,20 @@ export type TrendingAsset = { /** * Get the trending tokens for the given chains. * - * @param options - Options for getting trending tokens. - * @param options.chainIds - The chains to get the trending tokens for. - * @param options.sortBy - The sort by field. - * @param options.minLiquidity - The minimum liquidity. - * @param options.minVolume24hUsd - The minimum volume 24h in USD. - * @param options.maxVolume24hUsd - The maximum volume 24h in USD. - * @param options.minMarketCap - The minimum market cap. - * @param options.maxMarketCap - The maximum market cap. - * @param options.excludeLabels - Array of labels to exclude (e.g., ['stable_coin', 'blue_chip']). - * @param options.includeRwaData - Optional flag to include RWA data in the results (defaults to true). - * @param options.usePriceApiData - Optional flag to use price API data in the results (defaults to true). - * @param options.includeTokenSecurityData - Optional flag to include token security data in the results (defaults to false). + * Accepts all known query parameters plus any additional ones via the + * index signature on {@link TrendingTokensQueryParams}. New API parameters + * can be passed without updating this function. + * + * @param options - Options bag: `chainIds` (required) plus any query params + * supported by the v3 trending endpoint. * @returns The trending tokens. * @throws Will throw if the request fails. */ -export async function getTrendingTokens({ - chainIds, - sortBy, - minLiquidity, - minVolume24hUsd, - maxVolume24hUsd, - minMarketCap, - maxMarketCap, - excludeLabels, - includeRwaData = true, - usePriceApiData = true, - includeTokenSecurityData, -}: { - chainIds: CaipChainId[]; - sortBy?: SortTrendingBy; - minLiquidity?: number; - minVolume24hUsd?: number; - maxVolume24hUsd?: number; - minMarketCap?: number; - maxMarketCap?: number; - excludeLabels?: string[]; - includeRwaData?: boolean; - usePriceApiData?: boolean; - includeTokenSecurityData?: boolean; -}): Promise { +export async function getTrendingTokens( + options: { chainIds: CaipChainId[] } & TrendingTokensQueryParams, +): Promise { + const { chainIds, ...rest } = options; + if (chainIds.length === 0) { console.error('No chains provided'); return []; @@ -438,16 +412,9 @@ export async function getTrendingTokens({ const trendingTokensURL = getTrendingTokensURL({ chainIds, - sort: sortBy, - minLiquidity, - minVolume24hUsd, - maxVolume24hUsd, - minMarketCap, - maxMarketCap, - excludeLabels, - includeRwaData, - usePriceApiData, - includeTokenSecurityData, + includeRwaData: true, + usePriceApiData: true, + ...rest, }); try { diff --git a/packages/core-backend/src/api/token/client.test.ts b/packages/core-backend/src/api/token/client.test.ts index d09900257f..266440e283 100644 --- a/packages/core-backend/src/api/token/client.test.ts +++ b/packages/core-backend/src/api/token/client.test.ts @@ -282,6 +282,22 @@ describe('TokenApiClient', () => { expect(calledUrl).toContain('includeTokenSecurityData=true'); }); + it('passes unknown query params through to the URL', async () => { + const mockResponse = [ + { address: '0xtrending', symbol: 'TRD', chainId: 1 }, + ]; + mockFetch.mockResolvedValueOnce(createMockResponse(mockResponse)); + + await client.token.fetchV3TrendingTokens(['eip155:1'], { + vsCurrency: 'eur', + customFlag: true, + }); + + const calledUrl = mockFetch.mock.calls[0]?.[0] as string; + expect(calledUrl).toContain('vsCurrency=eur'); + expect(calledUrl).toContain('customFlag=true'); + }); + it('fetches v3 top gainers', async () => { const mockResponse = [ { address: '0xgainer', symbol: 'GAIN', chainId: 1 }, diff --git a/packages/core-backend/src/api/token/client.ts b/packages/core-backend/src/api/token/client.ts index 1194c0df48..76f5f00ea2 100644 --- a/packages/core-backend/src/api/token/client.ts +++ b/packages/core-backend/src/api/token/client.ts @@ -28,6 +28,7 @@ import type { TrendingToken, TrendingSortOption, TopGainersSortOption, + V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, } from './types'; @@ -397,31 +398,21 @@ export class TokenApiClient extends BaseApiClient { /** * Returns the TanStack Query options object for v3 trending tokens. * + * `queryOptions` accepts all known filter params plus any additional ones + * via the index signature on {@link V3TrendingQueryOptions}. New API + * parameters pass through without changes to this method. + * * @param chainIds - Array of chain IDs. - * @param queryOptions - Query options. - * @param queryOptions.sortBy - Sort option. - * @param queryOptions.minLiquidity - Minimum liquidity filter. - * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter. - * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter. - * @param queryOptions.minMarketCap - Minimum market cap filter. - * @param queryOptions.maxMarketCap - Maximum market cap filter. - * @param queryOptions.includeTokenSecurityData - Whether to include token security data. + * @param queryOptions - Query options (see {@link V3TrendingQueryOptions}). * @param options - Fetch options including cache settings. * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc. */ getV3TrendingTokensQueryOptions( chainIds: string[], - queryOptions?: { - sortBy?: TrendingSortOption; - minLiquidity?: number; - minVolume24hUsd?: number; - maxVolume24hUsd?: number; - minMarketCap?: number; - maxMarketCap?: number; - includeTokenSecurityData?: boolean; - }, + queryOptions?: V3TrendingQueryOptions, options?: FetchOptions, ): FetchQueryOptions { + const { sortBy, ...rest } = queryOptions ?? {}; return { queryKey: [ 'token', @@ -433,13 +424,8 @@ export class TokenApiClient extends BaseApiClient { signal, params: { chainIds, - sort: queryOptions?.sortBy, - minLiquidity: queryOptions?.minLiquidity, - minVolume24hUsd: queryOptions?.minVolume24hUsd, - maxVolume24hUsd: queryOptions?.maxVolume24hUsd, - minMarketCap: queryOptions?.minMarketCap, - maxMarketCap: queryOptions?.maxMarketCap, - includeTokenSecurityData: queryOptions?.includeTokenSecurityData, + sort: sortBy, + ...rest, }, }), ...getQueryOptionsOverrides(options), @@ -452,28 +438,13 @@ export class TokenApiClient extends BaseApiClient { * Get trending tokens (v3 endpoint). * * @param chainIds - Array of chain IDs. - * @param queryOptions - Query options. - * @param queryOptions.sortBy - Sort option. - * @param queryOptions.minLiquidity - Minimum liquidity filter. - * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter. - * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter. - * @param queryOptions.minMarketCap - Minimum market cap filter. - * @param queryOptions.maxMarketCap - Maximum market cap filter. - * @param queryOptions.includeTokenSecurityData - Whether to include token security data. + * @param queryOptions - Query options (see {@link V3TrendingQueryOptions}). * @param options - Fetch options including cache settings. * @returns Array of trending tokens. */ async fetchV3TrendingTokens( chainIds: string[], - queryOptions?: { - sortBy?: TrendingSortOption; - minLiquidity?: number; - minVolume24hUsd?: number; - maxVolume24hUsd?: number; - minMarketCap?: number; - maxMarketCap?: number; - includeTokenSecurityData?: boolean; - }, + queryOptions?: V3TrendingQueryOptions, options?: FetchOptions, ): Promise { return this.queryClient.fetchQuery( diff --git a/packages/core-backend/src/api/token/index.ts b/packages/core-backend/src/api/token/index.ts index dbf9047e99..c7b47dd146 100644 --- a/packages/core-backend/src/api/token/index.ts +++ b/packages/core-backend/src/api/token/index.ts @@ -12,6 +12,7 @@ export type { TrendingToken, TopGainersSortOption, TrendingSortOption, + V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, TokenSecurityData, TokenSecurityFeature, diff --git a/packages/core-backend/src/api/token/types.ts b/packages/core-backend/src/api/token/types.ts index 9bc9760761..fb54e35731 100644 --- a/packages/core-backend/src/api/token/types.ts +++ b/packages/core-backend/src/api/token/types.ts @@ -169,6 +169,24 @@ export type TrendingSortOption = | 'h6_trending' | 'h24_trending'; +/** + * Query options for the v3 trending tokens endpoint. + * + * Known parameters are explicitly typed for autocomplete and documentation. + * The index signature allows new API parameters to pass through without + * requiring a core release. + */ +export type V3TrendingQueryOptions = { + sortBy?: TrendingSortOption; + minLiquidity?: number; + minVolume24hUsd?: number; + maxVolume24hUsd?: number; + minMarketCap?: number; + maxMarketCap?: number; + includeTokenSecurityData?: boolean; + [key: string]: string | number | boolean | string[] | undefined; +}; + // ============================================================================ // UTILITY TYPES // ============================================================================ diff --git a/packages/core-backend/src/index.ts b/packages/core-backend/src/index.ts index 8245157118..0e26716067 100644 --- a/packages/core-backend/src/index.ts +++ b/packages/core-backend/src/index.ts @@ -151,6 +151,7 @@ export type { TrendingToken, TopGainersSortOption, TrendingSortOption, + V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, // Tokens API types V1TokenSupportedNetworksResponse, From 28da12dabb1de4517bed9165ff6baa8cf69b4991 Mon Sep 17 00:00:00 2001 From: sahar-fehri Date: Wed, 6 May 2026 18:16:48 +0200 Subject: [PATCH 2/3] fix: fix TrendingV3 changes --- packages/assets-controllers/CHANGELOG.md | 7 +++ .../core-backend/src/api/token/client.test.ts | 16 ------ packages/core-backend/src/api/token/client.ts | 53 ++++++++++++++----- packages/core-backend/src/api/token/index.ts | 1 - packages/core-backend/src/api/token/types.ts | 18 ------- packages/core-backend/src/index.ts | 1 - 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index 07de57bfce..d640e9acc0 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -7,8 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Export new type `TrendingTokensQueryParams` for extensible trending token query parameters ([#8729](https://github.com/MetaMask/core/pull/8729)) + ### Changed +- **BREAKING:** `getTrendingTokens` now accepts `sort` instead of `sortBy` to match the API parameter name ([#8729](https://github.com/MetaMask/core/pull/8729)) +- `getTrendingTokens` and `getTrendingTokensURL` now accept arbitrary query parameters via an index signature on `TrendingTokensQueryParams`, allowing new API parameters to pass through without a core release ([#8729](https://github.com/MetaMask/core/pull/8729)) + - Bump `@metamask/account-tree-controller` from `^7.2.0` to `^7.3.0` ([#8722](https://github.com/MetaMask/core/pull/8722)) - Bump `@metamask/keyring-controller` from `^25.4.0` to `^25.5.0` ([#8722](https://github.com/MetaMask/core/pull/8722)) - Bump `@metamask/multichain-account-service` from `^8.0.1` to `^9.0.0` ([#8722](https://github.com/MetaMask/core/pull/8722)) diff --git a/packages/core-backend/src/api/token/client.test.ts b/packages/core-backend/src/api/token/client.test.ts index 266440e283..d09900257f 100644 --- a/packages/core-backend/src/api/token/client.test.ts +++ b/packages/core-backend/src/api/token/client.test.ts @@ -282,22 +282,6 @@ describe('TokenApiClient', () => { expect(calledUrl).toContain('includeTokenSecurityData=true'); }); - it('passes unknown query params through to the URL', async () => { - const mockResponse = [ - { address: '0xtrending', symbol: 'TRD', chainId: 1 }, - ]; - mockFetch.mockResolvedValueOnce(createMockResponse(mockResponse)); - - await client.token.fetchV3TrendingTokens(['eip155:1'], { - vsCurrency: 'eur', - customFlag: true, - }); - - const calledUrl = mockFetch.mock.calls[0]?.[0] as string; - expect(calledUrl).toContain('vsCurrency=eur'); - expect(calledUrl).toContain('customFlag=true'); - }); - it('fetches v3 top gainers', async () => { const mockResponse = [ { address: '0xgainer', symbol: 'GAIN', chainId: 1 }, diff --git a/packages/core-backend/src/api/token/client.ts b/packages/core-backend/src/api/token/client.ts index 76f5f00ea2..1194c0df48 100644 --- a/packages/core-backend/src/api/token/client.ts +++ b/packages/core-backend/src/api/token/client.ts @@ -28,7 +28,6 @@ import type { TrendingToken, TrendingSortOption, TopGainersSortOption, - V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, } from './types'; @@ -398,21 +397,31 @@ export class TokenApiClient extends BaseApiClient { /** * Returns the TanStack Query options object for v3 trending tokens. * - * `queryOptions` accepts all known filter params plus any additional ones - * via the index signature on {@link V3TrendingQueryOptions}. New API - * parameters pass through without changes to this method. - * * @param chainIds - Array of chain IDs. - * @param queryOptions - Query options (see {@link V3TrendingQueryOptions}). + * @param queryOptions - Query options. + * @param queryOptions.sortBy - Sort option. + * @param queryOptions.minLiquidity - Minimum liquidity filter. + * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter. + * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter. + * @param queryOptions.minMarketCap - Minimum market cap filter. + * @param queryOptions.maxMarketCap - Maximum market cap filter. + * @param queryOptions.includeTokenSecurityData - Whether to include token security data. * @param options - Fetch options including cache settings. * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc. */ getV3TrendingTokensQueryOptions( chainIds: string[], - queryOptions?: V3TrendingQueryOptions, + queryOptions?: { + sortBy?: TrendingSortOption; + minLiquidity?: number; + minVolume24hUsd?: number; + maxVolume24hUsd?: number; + minMarketCap?: number; + maxMarketCap?: number; + includeTokenSecurityData?: boolean; + }, options?: FetchOptions, ): FetchQueryOptions { - const { sortBy, ...rest } = queryOptions ?? {}; return { queryKey: [ 'token', @@ -424,8 +433,13 @@ export class TokenApiClient extends BaseApiClient { signal, params: { chainIds, - sort: sortBy, - ...rest, + sort: queryOptions?.sortBy, + minLiquidity: queryOptions?.minLiquidity, + minVolume24hUsd: queryOptions?.minVolume24hUsd, + maxVolume24hUsd: queryOptions?.maxVolume24hUsd, + minMarketCap: queryOptions?.minMarketCap, + maxMarketCap: queryOptions?.maxMarketCap, + includeTokenSecurityData: queryOptions?.includeTokenSecurityData, }, }), ...getQueryOptionsOverrides(options), @@ -438,13 +452,28 @@ export class TokenApiClient extends BaseApiClient { * Get trending tokens (v3 endpoint). * * @param chainIds - Array of chain IDs. - * @param queryOptions - Query options (see {@link V3TrendingQueryOptions}). + * @param queryOptions - Query options. + * @param queryOptions.sortBy - Sort option. + * @param queryOptions.minLiquidity - Minimum liquidity filter. + * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter. + * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter. + * @param queryOptions.minMarketCap - Minimum market cap filter. + * @param queryOptions.maxMarketCap - Maximum market cap filter. + * @param queryOptions.includeTokenSecurityData - Whether to include token security data. * @param options - Fetch options including cache settings. * @returns Array of trending tokens. */ async fetchV3TrendingTokens( chainIds: string[], - queryOptions?: V3TrendingQueryOptions, + queryOptions?: { + sortBy?: TrendingSortOption; + minLiquidity?: number; + minVolume24hUsd?: number; + maxVolume24hUsd?: number; + minMarketCap?: number; + maxMarketCap?: number; + includeTokenSecurityData?: boolean; + }, options?: FetchOptions, ): Promise { return this.queryClient.fetchQuery( diff --git a/packages/core-backend/src/api/token/index.ts b/packages/core-backend/src/api/token/index.ts index c7b47dd146..dbf9047e99 100644 --- a/packages/core-backend/src/api/token/index.ts +++ b/packages/core-backend/src/api/token/index.ts @@ -12,7 +12,6 @@ export type { TrendingToken, TopGainersSortOption, TrendingSortOption, - V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, TokenSecurityData, TokenSecurityFeature, diff --git a/packages/core-backend/src/api/token/types.ts b/packages/core-backend/src/api/token/types.ts index fb54e35731..9bc9760761 100644 --- a/packages/core-backend/src/api/token/types.ts +++ b/packages/core-backend/src/api/token/types.ts @@ -169,24 +169,6 @@ export type TrendingSortOption = | 'h6_trending' | 'h24_trending'; -/** - * Query options for the v3 trending tokens endpoint. - * - * Known parameters are explicitly typed for autocomplete and documentation. - * The index signature allows new API parameters to pass through without - * requiring a core release. - */ -export type V3TrendingQueryOptions = { - sortBy?: TrendingSortOption; - minLiquidity?: number; - minVolume24hUsd?: number; - maxVolume24hUsd?: number; - minMarketCap?: number; - maxMarketCap?: number; - includeTokenSecurityData?: boolean; - [key: string]: string | number | boolean | string[] | undefined; -}; - // ============================================================================ // UTILITY TYPES // ============================================================================ diff --git a/packages/core-backend/src/index.ts b/packages/core-backend/src/index.ts index 0e26716067..8245157118 100644 --- a/packages/core-backend/src/index.ts +++ b/packages/core-backend/src/index.ts @@ -151,7 +151,6 @@ export type { TrendingToken, TopGainersSortOption, TrendingSortOption, - V3TrendingQueryOptions, V1SuggestedOccurrenceFloorsResponse, // Tokens API types V1TokenSupportedNetworksResponse, From 6a81d442a2bb92bc620ecfbf580c6cac3953b827 Mon Sep 17 00:00:00 2001 From: sahar-fehri Date: Thu, 7 May 2026 12:59:05 +0200 Subject: [PATCH 3/3] fix: fix default params --- packages/assets-controllers/src/token-service.test.ts | 4 ++-- packages/assets-controllers/src/token-service.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/assets-controllers/src/token-service.test.ts b/packages/assets-controllers/src/token-service.test.ts index ef7b30eda7..e6362f154a 100644 --- a/packages/assets-controllers/src/token-service.test.ts +++ b/packages/assets-controllers/src/token-service.test.ts @@ -1139,7 +1139,7 @@ describe('Token service', () => { it('returns empty array if api returns non-array response', async () => { nock(TOKEN_END_POINT_API) .get( - `/v3/tokens/trending?chainIds=${encodeURIComponent(sampleCaipChainId)}`, + `/v3/tokens/trending?chainIds=${encodeURIComponent(sampleCaipChainId)}&includeRwaData=true&usePriceApiData=true`, ) .reply(200, { error: 'Invalid response' }) .persist(); @@ -1151,7 +1151,7 @@ describe('Token service', () => { it('returns empty array if the fetch fails', async () => { nock(TOKEN_END_POINT_API) .get( - `/v3/tokens/trending?chainIds=${encodeURIComponent(sampleCaipChainId)}`, + `/v3/tokens/trending?chainIds=${encodeURIComponent(sampleCaipChainId)}&includeRwaData=true&usePriceApiData=true`, ) .reply(500) .persist(); diff --git a/packages/assets-controllers/src/token-service.ts b/packages/assets-controllers/src/token-service.ts index 273e051110..1b49ccd656 100644 --- a/packages/assets-controllers/src/token-service.ts +++ b/packages/assets-controllers/src/token-service.ts @@ -412,9 +412,9 @@ export async function getTrendingTokens( const trendingTokensURL = getTrendingTokensURL({ chainIds, - includeRwaData: true, - usePriceApiData: true, ...rest, + includeRwaData: rest.includeRwaData ?? true, + usePriceApiData: rest.usePriceApiData ?? true, }); try {