@liberfi.io/client 0.1.30 → 0.1.31

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/DexClientContext.ts","../src/hooks/useDexClient.ts","../src/hooks/useFinalStretchTokensQuery.ts","../src/hooks/useMigratedTokensQuery.ts","../src/hooks/useNewTokensQuery.ts","../src/hooks/usePresignedUploadUrlQuery.ts","../src/hooks/useSearchTokensQuery.ts","../src/hooks/useSendTxMutation.ts","../src/hooks/useStockTokensQuery.ts","../src/hooks/useSwapRouteQuery.ts","../src/hooks/useTokenCandlesQuery.ts","../src/hooks/useTokenHoldersQuery.ts","../src/hooks/useTokenMarketDataQuery.ts","../src/hooks/useTokenQuery.ts","../src/hooks/useTokenSecurityQuery.ts","../src/hooks/useTokensQuery.ts","../src/hooks/useTokenStatsQuery.ts","../src/hooks/useTokenTradeActivitiesQuery.ts","../src/hooks/useTrendingTokensQuery.ts","../src/hooks/useTxSuccessQuery.ts","../src/hooks/useWalletPnlQuery.ts","../src/hooks/useWalletPortfolioPnlsQuery.ts","../src/hooks/useWalletPortfolioPnlsInfiniteQuery.ts","../src/hooks/useWalletPortfoliosQuery.ts","../src/hooks/useWalletPortfoliosInfiniteQuery.ts","../src/hooks/useWalletTradeActivitiesQuery.ts","../src/hooks/useTokenStatsSubscription.ts","../src/hooks/useTokenCandlesSubscription.ts","../src/hooks/useTokenMarketDataSubscription.ts","../src/hooks/useTokenTradeActivitiesSubscription.ts","../src/hooks/useWalletPnlSubscription.ts","../src/hooks/useWalletPortfoliosSubscription.ts","../src/hooks/useWalletPortfolioPnlsSubscription.ts","../src/hooks/useWalletTradeActivitiesSubscription.ts","../src/hooks/useNewTokensSubscription.ts","../src/hooks/useNewTokensBasicSubscription.ts","../src/hooks/useNewTokensMarketDataSubscription.ts","../src/hooks/useNewTokensStatsSubscription.ts","../src/hooks/useNewTokensDataSubscription.ts","../src/hooks/useMigratedTokensDataSubscription.ts","../src/hooks/useFinalStretchTokensDataSubscription.ts","../src/hooks/useTrendingTokensDataSubscription.ts","../src/hooks/useStockTokensDataSubscription.ts","../src/utils.ts","../src/client.ts","../src/DexClientProvider.tsx"],"names":["version_default","DexClientContext","createContext","useDexClient","context","useContext","finalStretchTokensQueryKey","params","fetchFinalStretchTokens","client","chain","options","useFinalStretchTokensQuery","useQuery","migratedTokensQueryKey","fetchMigratedTokens","useMigratedTokensQuery","newTokensQueryKey","fetchNewTokens","useNewTokensQuery","fetchPresignedUploadUrl","usePresignedUploadUrlQuery","searchTokensQueryKey","fetchSearchTokens","useSearchTokensQuery","sendTx","useSendTxMutation","useMutation","stockTokensQueryKey","fetchStockTokens","useStockTokensQuery","swapRouteQueryKey","fetchSwapRoute","useSwapRouteQuery","tokenCandlesQueryKey","fetchTokenCandles","address","resolution","useTokenCandlesQuery","tokenHoldersQueryKey","fetchTokenHolders","useTokenHoldersQuery","tokenMarketDataQueryKey","fetchTokenMarketData","useTokenMarketDataQuery","tokenQueryKey","fetchToken","useTokenQuery","tokenSecurityQueryKey","fetchTokenSecurity","useTokenSecurityQuery","tokensQueryKey","fetchTokens","addresses","useTokensQuery","tokenStatsQueryKey","fetchTokenStats","useTokenStatsQuery","tokenTradeActivitiesQueryKey","fetchTokenTradeActivities","useTokenTradeActivitiesQuery","trendingTokensQueryKey","fetchTrendingTokens","useTrendingTokensQuery","txSuccessQueryKey","fetchTxSuccess","txHash","timeout","useTxSuccessQuery","walletPnlQueryKey","fetchWalletPnl","useWalletPnlQuery","walletPortfolioPnlsQueryKey","fetchWalletPortfolioPnls","cursor","limit","useWalletPortfolioPnlsQuery","walletPortfolioPnlsInfiniteQueryKey","useWalletPortfolioPnlsInfiniteQuery","useInfiniteQuery","pageParam","lastPage","walletPortfoliosQueryKey","fetchWalletPortfolios","useWalletPortfoliosQuery","walletPortfoliosInfiniteQueryKey","useWalletPortfoliosInfiniteQuery","walletTradeActivitiesQueryKey","fetchWalletTradeActivities","useWalletTradeActivitiesQuery","useTokenStatsSubscription","callback","subscribeClient","callbackRef","useRef","useEffect","subscription","stats","useTokenCandlesSubscription","candles","useTokenMarketDataSubscription","marketDatas","useTokenTradeActivitiesSubscription","trades","useWalletPnlSubscription","pnls","useWalletPortfoliosSubscription","portfolios","useWalletPortfolioPnlsSubscription","portfolioPnls","useWalletTradeActivitiesSubscription","useNewTokensSubscription","tokens","useNewTokensBasicSubscription","useNewTokensMarketDataSubscription","useNewTokensStatsSubscription","useNewTokensDataSubscription","data","useMigratedTokensDataSubscription","useFinalStretchTokensDataSubscription","useTrendingTokensDataSubscription","useStockTokensDataSubscription","toChainDTO","Chain","ChainSymbol","toResolutionDTO","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","GetNewTokensSortBy","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","fromTokenStatsDTO","fromTokenMarketDataDTO","fromTokenLiquidityDTO","parseTokenStatsByResolution","toOptionalNumber","value","period","fromTokenCandle","fromResolutionDTO","fromTokenSecurity","toSwapRouteInput","API","SwapRouteInputSwapMode","toSendTxInput","fromTokenHolderPage","holder","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","item","fromWalletPnlSummary","fromPnlDetailsPage","fromTradePage","fromTradeDetailDTO","isBuy","fromTokenSubscribed","fromTokenMetadataSubscribed","fromWsCandle","fromWsTokenStats","timeframes","record","result","tf","buys","sells","buyers","sellers","buyVolumeInUsd","sellVolumeInUsd","price","openInUsd","closeInUsd","totalTrades","totalTraders","totalVolumesInUsd","priceChange","fromWsTokenMarketDataFromStats","fromWsTokenDataSubscribed","fromWsTradeActivity","Client","accessToken","ChainStreamClient","token","security","holders","marketData","parseLaunchPlatformFromFilters","tokenPage","route","netWorth","pnl","detailsPage","tradePage","_chain","_address","_callback","WsChannelType","filter","DexClientProvider","children","jsx"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.30\";\n}\n\nexport default \"0.1.30\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface DexClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const DexClientContext = createContext<DexClientContextValue>(\n {} as DexClientContextValue,\n);\n","import { useContext } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"../DexClientContext\";\n\nexport function useDexClient(): DexClientContextValue {\n const context = useContext(DexClientContext);\n if (!context) {\n throw new Error(\"useDexClient must be used within an DexClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensQueryParams\n extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function finalStretchTokensQueryKey(\n params: UseFinalStretchTokensQueryParams,\n): string[] {\n return [\n \"finalStretchTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchFinalStretchTokens(\n client: API.IClient,\n { chain, ...options }: UseFinalStretchTokensQueryParams,\n) {\n return await client.getFinalStretchTokens(chain, options);\n}\n\nexport function useFinalStretchTokensQuery(\n params: UseFinalStretchTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: finalStretchTokensQueryKey(params),\n queryFn: async () => fetchFinalStretchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function migratedTokensQueryKey(\n params: UseMigratedTokensQueryParams,\n): string[] {\n return [\n \"migratedTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchMigratedTokens(\n client: API.IClient,\n { chain, ...options }: UseMigratedTokensQueryParams,\n) {\n return await client.getMigratedTokens(chain, options);\n}\n\nexport function useMigratedTokensQuery(\n params: UseMigratedTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: migratedTokensQueryKey(params),\n queryFn: async () => fetchMigratedTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function newTokensQueryKey(params: UseNewTokensQueryParams): string[] {\n return [\n \"newTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchNewTokens(\n client: API.IClient,\n { chain, ...options }: UseNewTokensQueryParams,\n) {\n return await client.getNewTokens(chain, options);\n}\n\nexport function useNewTokensQuery(\n params: UseNewTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: newTokensQueryKey(params),\n queryFn: async () => fetchNewTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport async function fetchPresignedUploadUrl(client: API.IClient) {\n return await client.getPresignedUploadUrl();\n}\n\nexport function usePresignedUploadUrlQuery(\n options: Omit<\n UseQueryOptions<string, Error, string, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: [\"presignedUploadUrl\"],\n queryFn: async () => fetchPresignedUploadUrl(client),\n staleTime: 0,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSearchTokensQueryParams = API.SearchTokensOptions;\n\nexport function searchTokensQueryKey(\n params: UseSearchTokensQueryParams,\n): string[] {\n return [\n \"searchTokens\",\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n JSON.stringify((params.chains ?? []).sort()),\n params.keyword ?? \"\",\n JSON.stringify(params.filters ?? []),\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n ];\n}\n\nexport async function fetchSearchTokens(\n client: API.IClient,\n params: UseSearchTokensQueryParams,\n) {\n return await client.searchTokens(params);\n}\n\nexport function useSearchTokensQuery(\n params: UseSearchTokensQueryParams,\n options: Omit<\n UseQueryOptions<\n API.SearchTokenCursorList,\n Error,\n API.SearchTokenCursorList,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: searchTokensQueryKey(params),\n queryFn: async () => fetchSearchTokens(client, params),\n ...options,\n });\n}\n","import { useMutation, UseMutationOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSendTxMutationParams = API.SendTxParams;\n\nexport async function sendTx(\n client: API.IClient,\n params: UseSendTxMutationParams,\n) {\n return await client.sendTx(params);\n}\n\nexport function useSendTxMutation(\n options: Omit<\n UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>,\n \"mutationFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useMutation({\n mutationFn: async (params: UseSendTxMutationParams) =>\n sendTx(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function stockTokensQueryKey(\n params: UseStockTokensQueryParams,\n): string[] {\n return [\n \"stockTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchStockTokens(\n client: API.IClient,\n { chain, ...options }: UseStockTokensQueryParams,\n) {\n return await client.getStockTokens(chain, options);\n}\n\nexport function useStockTokensQuery(\n params: UseStockTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: stockTokensQueryKey(params),\n queryFn: async () => fetchStockTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSwapRouteQueryParams = API.SwapParams;\n\nexport function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[] {\n return [\n \"swapRoute\",\n params.chain,\n params.userAddress,\n params.input,\n params.output,\n params.mode,\n params.amount,\n params.slippage ? `${params.slippage}` : \"\",\n params.priorityFee ?? \"\",\n params.tipFee ?? \"\",\n params.isAntiMev !== undefined ? `${params.isAntiMev}` : \"\",\n ];\n}\n\nexport async function fetchSwapRoute(\n client: API.IClient,\n params: UseSwapRouteQueryParams,\n) {\n return await client.swapRoute(params);\n}\n\nexport function useSwapRouteQuery(\n params: UseSwapRouteQueryParams,\n options: Omit<\n UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: swapRouteQueryKey(params),\n queryFn: async () => fetchSwapRoute(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function tokenCandlesQueryKey(\n params: UseTokenCandlesQueryParams,\n): string[] {\n return [\n \"tokenCandles\",\n params.chain,\n params.address,\n params.resolution,\n params.after?.toString() ?? \"\",\n params.before?.toString() ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n ];\n}\n\nexport async function fetchTokenCandles(\n client: API.IClient,\n { chain, address, resolution, ...options }: UseTokenCandlesQueryParams,\n) {\n return await client.getTokenCandles(chain, address, resolution, options);\n}\n\nexport function useTokenCandlesQuery(\n params: UseTokenCandlesQueryParams,\n options: Omit<\n UseQueryOptions<Array<TokenCandle>, Error, Array<TokenCandle>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenCandlesQueryKey(params),\n queryFn: async () => fetchTokenCandles(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenHolder } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenHoldersQueryParams extends API.CursorListOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenHoldersQueryKey(\n params: UseTokenHoldersQueryParams,\n): string[] {\n return [\n \"tokenHolders\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n ];\n}\n\nexport async function fetchTokenHolders(\n client: API.IClient,\n { chain, address, ...options }: UseTokenHoldersQueryParams,\n) {\n return await client.getTokenHolders(chain, address, options);\n}\n\nexport function useTokenHoldersQuery(\n params: UseTokenHoldersQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TokenHolder>,\n Error,\n API.CursorList<TokenHolder>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenHoldersQueryKey(params),\n queryFn: async () => fetchTokenHolders(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenMarketDataQueryKey(\n params: UseTokenMarketDataQueryParams,\n): string[] {\n return [\"tokenMarketData\", params.chain, params.address];\n}\n\nexport async function fetchTokenMarketData(\n client: API.IClient,\n { chain, address }: UseTokenMarketDataQueryParams,\n) {\n return await client.getTokenMarketData(chain, address);\n}\n\nexport function useTokenMarketDataQuery(\n params: UseTokenMarketDataQueryParams,\n options: Omit<\n UseQueryOptions<TokenMarketData, Error, TokenMarketData, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenMarketDataQueryKey(params),\n queryFn: async () => fetchTokenMarketData(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenQueryKey(params: UseTokenQueryParams): string[] {\n return [\"token\", params.chain, params.address];\n}\n\nexport async function fetchToken(\n client: API.IClient,\n { chain, address }: UseTokenQueryParams,\n) {\n return await client.getToken(chain, address);\n}\n\nexport function useTokenQuery(\n params: UseTokenQueryParams,\n options: Omit<\n UseQueryOptions<Token, Error, Token, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenQueryKey(params),\n queryFn: async () => fetchToken(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenSecurity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenSecurityQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenSecurityQueryKey(\n params: UseTokenSecurityQueryParams,\n): string[] {\n return [\"tokenSecurity\", params.chain, params.address];\n}\n\nexport async function fetchTokenSecurity(\n client: API.IClient,\n { chain, address }: UseTokenSecurityQueryParams,\n) {\n return await client.getTokenSecurity(chain, address);\n}\n\nexport function useTokenSecurityQuery(\n params: UseTokenSecurityQueryParams,\n options: Omit<\n UseQueryOptions<TokenSecurity, Error, TokenSecurity, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenSecurityQueryKey(params),\n queryFn: async () => fetchTokenSecurity(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokensQueryParams {\n chain: Chain;\n addresses: Array<string>;\n}\n\nexport function tokensQueryKey(params: UseTokensQueryParams): string[] {\n return [\"tokens\", params.chain, params.addresses.sort().join(\",\")];\n}\n\nexport async function fetchTokens(\n client: API.IClient,\n { chain, addresses }: UseTokensQueryParams,\n) {\n return await client.getTokens(chain, addresses);\n}\n\nexport function useTokensQuery(\n params: UseTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokensQueryKey(params),\n queryFn: async () => fetchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenStatsQueryKey(params: UseTokenStatsQueryParams): string[] {\n return [\"tokenStats\", params.chain, params.address];\n}\n\nexport async function fetchTokenStats(\n client: API.IClient,\n { chain, address }: UseTokenStatsQueryParams,\n) {\n return await client.getTokenStats(chain, address);\n}\n\nexport function useTokenStatsQuery(\n params: UseTokenStatsQueryParams,\n options: Omit<\n UseQueryOptions<TokenStats, Error, TokenStats, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenStatsQueryKey(params),\n queryFn: async () => fetchTokenStats(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenTradeActivitiesQueryKey(\n params: UseTokenTradeActivitiesQueryParams,\n): string[] {\n return [\n \"tokenTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchTokenTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseTokenTradeActivitiesQueryParams,\n) {\n return await client.getTokenTradeActivities(chain, address, options);\n}\n\nexport function useTokenTradeActivitiesQuery(\n params: UseTokenTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenTradeActivitiesQueryKey(params),\n queryFn: async () => fetchTokenTradeActivities(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\";\n}\n\nexport function trendingTokensQueryKey(\n params: UseTrendingTokensQueryParams,\n): string[] {\n return [\n \"trendingTokens\",\n params.chain,\n params.resolution,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchTrendingTokens(\n client: API.IClient,\n { chain, resolution, ...options }: UseTrendingTokensQueryParams,\n) {\n return await client.getTrendingTokens(chain, resolution, options);\n}\n\nexport function useTrendingTokensQuery(\n params: UseTrendingTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: trendingTokensQueryKey(params),\n queryFn: async () => fetchTrendingTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTxSuccessQueryParams {\n chain: Chain;\n txHash: string;\n timeout?: number;\n}\n\nexport function txSuccessQueryKey(params: UseTxSuccessQueryParams): string[] {\n return [\n \"txSuccess\",\n params.chain,\n params.txHash,\n params.timeout ? `${params.timeout}` : \"\",\n ];\n}\n\nexport async function fetchTxSuccess(\n client: API.IClient,\n { chain, txHash, timeout }: UseTxSuccessQueryParams,\n) {\n return await client.checkTxSuccess(chain, txHash, timeout);\n}\n\nexport function useTxSuccessQuery(\n params: UseTxSuccessQueryParams,\n options: Omit<\n UseQueryOptions<boolean, Error, boolean, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: txSuccessQueryKey(params),\n queryFn: async () => fetchTxSuccess(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPnl } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlQueryParams {\n chain: Chain;\n address: string;\n resolution?: string;\n}\n\nexport function walletPnlQueryKey(params: UseWalletPnlQueryParams): string[] {\n return [\n \"walletPnl\",\n params.chain,\n params.address,\n params.resolution ?? \"all\",\n ];\n}\n\nexport async function fetchWalletPnl(\n client: API.IClient,\n { chain, address, resolution }: UseWalletPnlQueryParams,\n) {\n return await client.getWalletPnl(chain, address, resolution);\n}\n\nexport function useWalletPnlQuery(\n params: UseWalletPnlQueryParams,\n options: Omit<\n UseQueryOptions<WalletPnl, Error, WalletPnl, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPnlQueryKey(params),\n queryFn: async () => fetchWalletPnl(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nexport function walletPortfolioPnlsQueryKey(\n params: UseWalletPortfolioPnlsQueryParams,\n): string[] {\n return [\n \"walletPortfolioPnls\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n String(params.limit ?? \"\"),\n ];\n}\n\nexport async function fetchWalletPortfolioPnls(\n client: API.IClient,\n { chain, address, cursor, limit }: UseWalletPortfolioPnlsQueryParams,\n) {\n return await client.getWalletPortfolioPnls(chain, address, { cursor, limit });\n}\n\nexport function useWalletPortfolioPnlsQuery(\n params: UseWalletPortfolioPnlsQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolioPnls, Error, WalletPortfolioPnls, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfolioPnlsQueryKey(params),\n queryFn: async () => fetchWalletPortfolioPnls(client, params),\n ...options,\n });\n}\n","import {\n useInfiniteQuery,\n type InfiniteData,\n type UseInfiniteQueryOptions,\n} from \"@tanstack/react-query\";\nimport { Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nexport function walletPortfolioPnlsInfiniteQueryKey(\n params: UseWalletPortfolioPnlsInfiniteQueryParams,\n): string[] {\n return [\n \"walletPortfolioPnls\",\n \"infinite\",\n params.chain,\n params.address,\n String(params.limit ?? \"\"),\n ];\n}\n\nexport function useWalletPortfolioPnlsInfiniteQuery(\n params: UseWalletPortfolioPnlsInfiniteQueryParams,\n options: Omit<\n UseInfiniteQueryOptions<\n WalletPortfolioPnls,\n Error,\n InfiniteData<WalletPortfolioPnls>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n > = {},\n) {\n const { client } = useDexClient();\n return useInfiniteQuery({\n queryKey: walletPortfolioPnlsInfiniteQueryKey(params),\n queryFn: async ({ pageParam }) =>\n client.getWalletPortfolioPnls(params.chain, params.address, {\n cursor: pageParam,\n limit: params.limit ?? 100,\n }),\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage) =>\n lastPage.hasNext ? lastPage.endCursor : undefined,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\n \"walletPortfolios\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n String(params.limit ?? \"\"),\n ];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address, cursor, limit }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address, { cursor, limit });\n}\n\nexport function useWalletPortfoliosQuery(\n params: UseWalletPortfoliosQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolios, Error, WalletPortfolios, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfoliosQueryKey(params),\n queryFn: async () => fetchWalletPortfolios(client, params),\n ...options,\n });\n}\n","import {\n useInfiniteQuery,\n type InfiniteData,\n type UseInfiniteQueryOptions,\n} from \"@tanstack/react-query\";\nimport { Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nexport function walletPortfoliosInfiniteQueryKey(\n params: UseWalletPortfoliosInfiniteQueryParams,\n): string[] {\n return [\n \"walletPortfolios\",\n \"infinite\",\n params.chain,\n params.address,\n String(params.limit ?? \"\"),\n ];\n}\n\nexport function useWalletPortfoliosInfiniteQuery(\n params: UseWalletPortfoliosInfiniteQueryParams,\n options: Omit<\n UseInfiniteQueryOptions<\n WalletPortfolios,\n Error,\n InfiniteData<WalletPortfolios>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n > = {},\n) {\n const { client } = useDexClient();\n return useInfiniteQuery({\n queryKey: walletPortfoliosInfiniteQueryKey(params),\n queryFn: async ({ pageParam }) =>\n client.getWalletPortfolios(params.chain, params.address, {\n cursor: pageParam,\n limit: params.limit ?? 100,\n }),\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage) =>\n lastPage.hasNext ? lastPage.endCursor : undefined,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function walletTradeActivitiesQueryKey(\n params: UseWalletTradeActivitiesQueryParams,\n): string[] {\n return [\n \"walletTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchWalletTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseWalletTradeActivitiesQueryParams,\n) {\n return await client.getWalletTradeActivities(chain, address, options);\n}\n\nexport function useWalletTradeActivitiesQuery(\n params: UseWalletTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenStatsSubscription(\n params: UseTokenStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenStats(\n params.chain,\n params.address,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesSubscriptionParams {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function useTokenCandlesSubscription(\n params: UseTokenCandlesSubscriptionParams,\n callback: (candles: Array<TokenCandle>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenCandles(\n params.chain,\n params.address,\n params.resolution,\n (candles) => callbackRef.current(candles),\n );\n return () => subscription.unsubscribe();\n }, [\n subscribeClient,\n params.chain,\n params.address,\n params.resolution,\n options?.enabled,\n ]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenMarketDataSubscription(\n params: UseTokenMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenMarketData(\n params.chain,\n params.address,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenTradeActivitiesSubscription(\n params: UseTokenTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPnlSubscription(\n params: UseWalletPnlSubscriptionParams,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPnl(\n params.chain,\n params.address,\n (pnls) => callbackRef.current(pnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfoliosSubscription(\n params: UseWalletPortfoliosSubscriptionParams,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolios(\n params.chain,\n params.address,\n (portfolios) => callbackRef.current(portfolios),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfolioPnlsSubscription(\n params: UseWalletPortfolioPnlsSubscriptionParams,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolioPnls(\n params.chain,\n params.address,\n (portfolioPnls) => callbackRef.current(portfolioPnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletTradeActivitiesSubscription(\n params: UseWalletTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensSubscription(\n params: UseNewTokensSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokens(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensBasicSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensBasicSubscription(\n params: UseNewTokensBasicSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensBasic(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensMarketDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensMarketDataSubscription(\n params: UseNewTokensMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensMarketData(\n params.chain,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensStatsSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensStatsSubscription(\n params: UseNewTokensStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensStats(\n params.chain,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensDataSubscription(\n params: UseNewTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useMigratedTokensDataSubscription(\n params: UseMigratedTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeMigratedTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useFinalStretchTokensDataSubscription(\n params: UseFinalStretchTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeFinalStretchTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useTrendingTokensDataSubscription(\n params: UseTrendingTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTrendingTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useStockTokensDataSubscription(\n params: UseStockTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeStockTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import {\n Token as TokenDTO,\n Resolution,\n Candle,\n TokenStat,\n TokenHolderPage,\n TokenMarketData as TokenMarketDataDTO,\n GetNewTokensSortBy,\n FilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SwapRouteInputSwapMode,\n SendTxInput,\n SendTxResponse,\n WalletNetWorthPage,\n TradePage,\n DexPoolDTO,\n ChainSymbol,\n TokenCreatorsDTO,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsTokenHolder as WsTokenHolderDTO,\n WalletPnlSummaryDTO,\n PnlDetailsPage,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n TradeActivity,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber } from \"@liberfi.io/utils\";\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n switch (direction) {\n case \"asc\":\n return \"ASC\";\n case \"desc\":\n return \"DESC\";\n }\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return GetNewTokensSortBy.marketDatapriceInUsd;\n case \"priceChange1m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return GetNewTokensSortBy.marketDatamarketCapInUsd;\n case \"tvl\":\n return GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return GetNewTokensSortBy.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return GetNewTokensSortBy.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return GetNewTokensSortBy.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return GetNewTokensSortBy.marketDatatop100HoldingsRatio;\n case \"holders\":\n return GetNewTokensSortBy.marketDataholders;\n case \"creatorsHoldings\":\n return GetNewTokensSortBy.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return GetNewTokensSortBy.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return GetNewTokensSortBy.statsbuys1m;\n case \"buys5m\":\n return GetNewTokensSortBy.statsbuys5m;\n case \"buys15m\":\n return GetNewTokensSortBy.statsbuys15m;\n case \"buys30m\":\n return GetNewTokensSortBy.statsbuys30m;\n case \"buys1h\":\n return GetNewTokensSortBy.statsbuys1h;\n case \"buys4h\":\n return GetNewTokensSortBy.statsbuys4h;\n case \"buys24h\":\n return GetNewTokensSortBy.statsbuys24h;\n case \"sells1m\":\n return GetNewTokensSortBy.statssells1m;\n case \"sells5m\":\n return GetNewTokensSortBy.statssells5m;\n case \"sells15m\":\n return GetNewTokensSortBy.statssells15m;\n case \"sells30m\":\n return GetNewTokensSortBy.statssells30m;\n case \"sells1h\":\n return GetNewTokensSortBy.statssells1h;\n case \"sells4h\":\n return GetNewTokensSortBy.statssells4h;\n case \"sells24h\":\n return GetNewTokensSortBy.statssells24h;\n case \"trades1m\":\n return GetNewTokensSortBy.statstrades1m;\n case \"trades5m\":\n return GetNewTokensSortBy.statstrades5m;\n case \"trades1h\":\n return GetNewTokensSortBy.statstrades1h;\n case \"trades4h\":\n return GetNewTokensSortBy.statstrades4h;\n case \"trades24h\":\n return GetNewTokensSortBy.statstrades24h;\n case \"traders1m\":\n return GetNewTokensSortBy.statstraders1m;\n case \"traders5m\":\n return GetNewTokensSortBy.statstraders5m;\n case \"traders1h\":\n return GetNewTokensSortBy.statstraders1h;\n case \"traders4h\":\n return GetNewTokensSortBy.statstraders4h;\n case \"traders24h\":\n return GetNewTokensSortBy.statstraders24h;\n case \"volumes1m\":\n return GetNewTokensSortBy.statsvolumesInUsd1m;\n case \"volumes5m\":\n return GetNewTokensSortBy.statsvolumesInUsd5m;\n case \"volumes1h\":\n return GetNewTokensSortBy.statsvolumesInUsd1h;\n case \"volumes4h\":\n return GetNewTokensSortBy.statsvolumesInUsd4h;\n case \"volumes24h\":\n return GetNewTokensSortBy.statsvolumesInUsd24h;\n case \"createdAt\":\n return GetNewTokensSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<FilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as FilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: TokenCreatorsDTO): TokenCreator {\n return {\n address: input.address,\n share: input.share,\n isVerified: input.isVerified,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress,\n protocolFamily: input.extra?.launchFromProtocolFamily,\n },\n migrateProgress: input.marketData.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress,\n protocolFamily: input.extra?.migratedToProtocolFamily,\n poolAddress: input.extra?.migratedToPoolAddress,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias ? { ...input.socialMedias } : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n liquidities: input.liquidity?.map(fromTokenLiquidityDTO),\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: TokenStat): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: TokenStat,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPoolDTO): TokenLiquidity {\n return {\n image: input.image,\n poolAddress: input.poolAddress,\n programAddress: input.programAddress,\n protocolFamily: input.protocolFamily,\n tvl: input.tvlInSol,\n tvlInUsd: input.tvlInUsd,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: TokenMarketDataDTO,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply,\n marketCap: input.marketCapInSol,\n marketCapInUsd: input.marketCapInUsd,\n price: input.priceInSol,\n priceInUsd: input.priceInUsd,\n tvl: input.totalTvlInSol,\n tvlInUsd: input.totalTvlInUsd,\n holders: parseInt(input.holders),\n top10Holdings: input.top10TotalHoldings,\n top10HoldingsRatio: input.top10HoldingsRatio,\n top50Holdings: input.top50TotalHoldings,\n top50HoldingsRatio: input.top50HoldingsRatio,\n top100Holdings: input.top100TotalHoldings,\n top100HoldingsRatio: input.top100HoldingsRatio,\n bluechipHolders:\n input.bluechipTotalHolders === undefined\n ? undefined\n : parseInt(input.bluechipTotalHolders),\n bluechipHoldings: input.bluechipTotalHoldings,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio,\n kolHolders:\n input.kolTotalHolders === undefined\n ? undefined\n : parseInt(input.kolTotalHolders),\n kolHoldings: input.kolTotalHoldings,\n kolHoldingsRatio: input.kolHoldingsRatio,\n sniperHolders:\n input.sniperTotalHolders === undefined\n ? undefined\n : parseInt(input.sniperTotalHolders),\n sniperHoldings: input.sniperTotalHoldings,\n sniperHoldingsRatio: input.sniperHoldingsRatio,\n proHolders:\n input.proTotalHolders === undefined\n ? undefined\n : parseInt(input.proTotalHolders),\n proHoldings: input.proTotalHoldings,\n proHoldingsRatio: input.proHoldingsRatio,\n insiderHolders:\n input.insiderTotalHolders === undefined\n ? undefined\n : parseInt(input.insiderTotalHolders),\n insiderHoldings: input.insiderTotalHoldings,\n insiderHoldingsRatio: input.insiderHoldingsRatio,\n sandwichHolders:\n input.sandwishTotalHolders === undefined\n ? undefined\n : parseInt(input.sandwishTotalHolders),\n sandwichHoldings: input.sandwishTotalHoldings,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio,\n freshHolders:\n input.freshTotalHolders === undefined\n ? undefined\n : parseInt(input.freshTotalHolders),\n freshHoldings: input.freshTotalHoldings,\n freshHoldingsRatio: input.freshHoldingsRatio,\n bundleHolders:\n input.bundleTotalHolders === undefined\n ? undefined\n : parseInt(input.bundleTotalHolders),\n bundleHoldings: input.bundleTotalHoldings,\n bundleHoldingsRatio: input.bundleHoldingsRatio,\n devHolders:\n input.devTotalHolders === undefined\n ? undefined\n : parseInt(input.devTotalHolders),\n devHoldings: input.devTotalHoldings,\n devHoldingsRatio: input.devHoldingsRatio,\n };\n}\n\nexport function fromTokenCandle(input: Candle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nfunction fromResolutionDTO(resolution: string): TokenResolution {\n if (resolution === \"1d\") return \"24h\";\n return resolution as TokenResolution;\n}\n\nexport function fromTokenSecurity(\n input: Record<string, unknown>,\n): TokenSecurity {\n return {\n hasTransferFee: input.hasTransferFee as boolean | undefined,\n isTransferFeeUpgradable: input.isTransferFeeUpgradable as\n | boolean\n | undefined,\n isTransferable: input.isTransferable as boolean | undefined,\n isFreezable: input.isFreezable as boolean | undefined,\n isClosable: input.isClosable as boolean | undefined,\n };\n}\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n return {\n dex: \"jupiter\" as SwapRouteInput[\"dex\"],\n userAddress: params.userAddress,\n amount: params.amount,\n swapMode: (params.mode === API.SwapMode.EXACT_IN\n ? SwapRouteInputSwapMode.ExactIn\n : SwapRouteInputSwapMode.ExactOut) as SwapRouteInput[\"swapMode\"],\n slippage: params.slippage ?? 1,\n inputMint: params.input,\n outputMint: params.output,\n priorityFee: params.priorityFee,\n };\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n return {\n signedTx: params.serializedTx,\n };\n}\n\nexport function fromTokenHolderPage(\n input: TokenHolderPage,\n): API.CursorList<TokenHolder> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map((holder) => ({\n address: holder.walletAddress,\n amount: holder.amount,\n amountInUsd: holder.amountInUsd,\n ratio: holder.percentage,\n })),\n };\n}\n\nexport function fromTokenPage(\n input: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n total: input.total,\n data: input.data.map(fromTokenDTO),\n extra: input.countsByProtocols,\n };\n}\n\nexport function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute {\n return {\n serializedTx: input.serializedTx,\n plans: [],\n extra: input.routeInfo,\n };\n}\n\nexport function fromSendTxResult(input: SendTxResponse): API.SendTxResult {\n return {\n txHash: input.signature,\n extra: { jobId: input.jobId, elapsedTime: input.elapsedTime },\n };\n}\n\nexport function fromWalletPortfolios(\n chain: Chain,\n input: WalletNetWorthPage,\n): WalletPortfolios {\n const portfolios: Portfolio[] = (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n\n return {\n chain: portfolios[0]?.chain ?? chain,\n address: input.walletAddress,\n balanceInUsd: input.totalValueInUsd,\n balanceInNative: input.totalValueInNative,\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletPnlSummary(\n chain: Chain,\n address: string,\n input: WalletPnlSummaryDTO,\n): WalletPnl {\n return {\n chain,\n address,\n tokens: input.tokens ? Number(input.tokens) : undefined,\n buys: input.buys ? Number(input.buys) : undefined,\n sells: input.sells ? Number(input.sells) : undefined,\n totalTrades: input.totalTrades ? Number(input.totalTrades) : undefined,\n wins: input.wins ? Number(input.wins) : undefined,\n losses: input.losses ? Number(input.losses) : undefined,\n winRate: input.winRate,\n buyAmountInUsd: input.buyAmountInUsd,\n sellAmountInUsd: input.sellAmountInUsd,\n totalCostInUsd: input.totalCostInUsd,\n realizedProfitInUsd: input.realizedProfitInUsd,\n realizedProfitRatio: input.realizedProfitRatio,\n unrealizedProfitInUsd: input.unrealizedProfitInUsd,\n unrealizedProfitRatio: input.unrealizedProfitRatio,\n totalProfitInUsd: input.totalProfitInUsd,\n totalProfitRatio: input.totalProfitRatio,\n avgProfitPerTradeInUsd: input.avgProfitPerTradeInUsd,\n };\n}\n\nexport function fromPnlDetailsPage(\n chain: Chain,\n address: string,\n input: PnlDetailsPage,\n): WalletPortfolioPnls {\n const portfolios: PortfolioPnl[] = input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n\n return {\n chain,\n address,\n tokens: Number(input.summary.tokens),\n buys: Number(input.summary.buys),\n sells: Number(input.summary.sells),\n totalTrades: Number(input.summary.totalTrades),\n wins: Number(input.summary.wins),\n losses: Number(input.summary.losses),\n winRate: input.summary.winRate,\n buyAmountInUsd: input.summary.buyAmountInUsd,\n sellAmountInUsd: input.summary.sellAmountInUsd,\n totalCostInUsd: input.summary.totalCostInUsd,\n realizedProfitInUsd: input.summary.realizedProfitInUsd,\n realizedProfitRatio: input.summary.realizedProfitRatio,\n unrealizedProfitInUsd: input.summary.unrealizedProfitInUsd,\n totalProfitInUsd: input.summary.totalProfitInUsd,\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromTradePage(input: TradePage): API.CursorList<TradeActivity> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTradeDetailDTO),\n };\n}\n\nfunction fromTradeDetailDTO(input: TradePage[\"data\"][number]): TradeActivity {\n const isBuy = input.type.toLowerCase() === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: input.dexProgramAddress,\n protocolFamily: input.dexProtocolFamily,\n image: input.dexImage,\n },\n poolAddress: input.poolAddress,\n status: (input.status as TradeActivity[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromTokenSubscribed(\n chain: Chain,\n input: WsNewToken,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n createdAt: new Date(input.createdAtMs),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n };\n}\n\nexport function fromTokenMetadataSubscribed(\n chain: Chain,\n input: WsTokenMetadata,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n socialMedias: input.socialMedia ? { ...input.socialMedia } : undefined,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : new Date(0),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n migratedTo: input.migratedTo\n ? {\n programAddress: input.migratedTo.programAddress,\n protocolFamily: input.migratedTo.protocolFamily,\n }\n : undefined,\n };\n}\n\n// ====================================\n// WebSocket data conversion functions\n// ====================================\n\nexport function fromWsCandle(input: WsCandle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nexport function fromWsTokenStats(input: WsTokenStat): TokenStats {\n const timeframes = [\"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"4h\", \"24h\"] as const;\n const record = input as unknown as Record<\n string,\n number | string | undefined\n >;\n const result: TokenStats = {};\n\n for (const tf of timeframes) {\n const buys = record[`buys${tf}`] as number | undefined;\n const sells = record[`sells${tf}`] as number | undefined;\n const buyers = record[`buyers${tf}`] as number | undefined;\n const sellers = record[`sellers${tf}`] as number | undefined;\n const buyVolumeInUsd = record[`buyVolumeInUsd${tf}`] as string | undefined;\n const sellVolumeInUsd = record[`sellVolumeInUsd${tf}`] as\n | string\n | undefined;\n const trades = record[`trades${tf}`] as number | undefined;\n const price = record[`price${tf}`] as string | undefined;\n const openInUsd = record[`openInUsd${tf}`] as string | undefined;\n const closeInUsd = record[`closeInUsd${tf}`] as string | undefined;\n\n const hasData =\n buys !== undefined ||\n sells !== undefined ||\n trades !== undefined ||\n price !== undefined;\n\n if (!hasData) continue;\n\n const totalTrades =\n trades ??\n (buys !== undefined && sells !== undefined ? buys + sells : undefined);\n const totalTraders =\n buyers !== undefined && sellers !== undefined\n ? buyers + sellers\n : undefined;\n const totalVolumesInUsd =\n buyVolumeInUsd !== undefined && sellVolumeInUsd !== undefined\n ? new SafeBigNumber(buyVolumeInUsd).plus(sellVolumeInUsd).toString()\n : undefined;\n const priceChange =\n openInUsd && closeInUsd && new SafeBigNumber(openInUsd).gt(0)\n ? new SafeBigNumber(closeInUsd)\n .minus(openInUsd)\n .div(openInUsd)\n .toString()\n : undefined;\n\n result[tf] = {\n buys,\n sells,\n trades: totalTrades,\n buyers,\n sellers,\n traders: totalTraders,\n buyVolumesInUsd: buyVolumeInUsd,\n sellVolumesInUsd: sellVolumeInUsd,\n volumesInUsd: totalVolumesInUsd,\n openPriceInUsd: openInUsd,\n closePriceInUsd: closeInUsd,\n priceInUsd: price ?? closeInUsd,\n priceChange,\n };\n }\n\n return result;\n}\n\nexport function fromWsTokenMarketDataFromStats(\n input: WsTokenStat,\n): TokenMarketData {\n return {\n priceInUsd: input.price,\n };\n}\n\nexport function fromWsTokenDataSubscribed(\n input: WsTokenStat,\n): API.TokenDataSubscribed {\n return {\n address: input.address,\n stats: fromWsTokenStats(input),\n marketData: fromWsTokenMarketDataFromStats(input),\n };\n}\n\nexport function fromWsTokenMarketDataFromHolder(\n input: WsTokenHolderDTO,\n): Partial<TokenMarketData> {\n return {\n holders: input.holders,\n top10Holdings: input.top10HoldersAmount,\n top10HoldingsRatio: input.top10HoldersRatio,\n top50Holdings: input.top50HoldersAmount,\n top50HoldingsRatio: input.top50HoldersRatio,\n top100Holdings: input.top100HoldersAmount,\n top100HoldingsRatio: input.top100HoldersRatio,\n devHolders:\n input.balanceTagDevHolders === undefined\n ? undefined\n : input.balanceTagDevHolders,\n devHoldings: input.balanceTagDevAmount,\n devHoldingsRatio: input.balanceTagDevRatio,\n sniperHolders:\n input.balanceTagSniperHolders === undefined\n ? undefined\n : input.balanceTagSniperHolders,\n sniperHoldings: input.balanceTagSniperAmount,\n sniperHoldingsRatio: input.balanceTagSniperRatio,\n freshHolders:\n input.balanceTagFreshHolders === undefined\n ? undefined\n : input.balanceTagFreshHolders,\n freshHoldings: input.balanceTagFreshAmount,\n freshHoldingsRatio: input.balanceTagFreshRatio,\n bundleHolders:\n input.balanceTagBundleHolders === undefined\n ? undefined\n : input.balanceTagBundleHolders,\n bundleHoldings: input.balanceTagBundleAmount,\n bundleHoldingsRatio: input.balanceTagBundleRatio,\n sandwichHolders:\n input.balanceTagSandwichHolders === undefined\n ? undefined\n : input.balanceTagSandwichHolders,\n sandwichHoldings: input.balanceTagSandwichAmount,\n sandwichHoldingsRatio: input.balanceTagSandwichRatio,\n };\n}\n\nexport function fromWsTradeActivity(\n chain: Chain,\n input: WsTradeActivity,\n): TradeActivity {\n const isBuy = input.kind.toLowerCase() === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n","import {\n ChainStreamClient,\n ChainStreamClientOptions,\n TokenProvider,\n ChainSymbol,\n GetFinalStretchTokensSortBy,\n GetFinalStretchTokensSortDirection,\n GetHotTokensSortBy,\n GetHotTokensSortDirection,\n GetMigratedTokensSortBy,\n GetMigratedTokensSortDirection,\n GetNewTokensSortBy,\n GetNewTokensSortDirection,\n GetStocksTokensSortBy,\n GetStocksTokensSortDirection,\n GetTradesType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsChannelType,\n WsWalletPnl,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TradeActivity,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n fromWsCandle,\n fromWsTokenStats,\n fromWsTokenMarketDataFromStats,\n fromWsTokenDataSubscribed,\n fromWsTradeActivity,\n fromWalletPnlSummary,\n fromPnlDetailsPage,\n} from \"./utils\";\n\nexport type ClientOptions = ChainStreamClientOptions;\n\nexport type ClientTokenProvider = TokenProvider | string;\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map(fromTokenCandle);\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(toChainDTO(chain), {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetNewTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetNewTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetFinalStretchTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetFinalStretchTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetMigratedTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetMigratedTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetHotTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetHotTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetStocksTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetStocksTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { result } = await this._client.waitForJob<{\n id: string;\n status: string;\n result: { success: boolean };\n }>(txHash, timeout);\n return result.success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios> {\n const netWorth = await this._client.wallet.getNetWorth(\n toChainDTO(chain),\n address,\n { cursor: options?.cursor, limit: options?.limit ?? 100 },\n );\n return fromWalletPortfolios(chain, netWorth);\n }\n\n async getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl> {\n const pnl = await this._client.wallet.getPnl(\n toChainDTO(chain),\n address,\n resolution\n ? { resolution: resolution as \"1d\" | \"7d\" | \"30d\" | \"all\" }\n : undefined,\n );\n return fromWalletPnlSummary(chain, address, pnl);\n }\n\n async getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls> {\n const detailsPage = await this._client.wallet.getPnlDetails(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit ?? 100,\n },\n );\n return fromPnlDetailsPage(chain, address, detailsPage);\n }\n\n async getWalletTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n walletAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getTokenTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n tokenAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n return await this._client.ipfs.presign();\n }\n\n subscribeTokenBasic(\n _chain: Chain,\n _address: string,\n _callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\n \"subscribeTokenBasic is not supported by ChainStream backend. \" +\n \"Token basic info (name, symbol, image) rarely changes in real-time.\",\n );\n }\n\n subscribeTokenMarketData(\n chain: Chain,\n address: string,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) =>\n callback([fromWsTokenMarketDataFromStats(data)]),\n });\n }\n\n subscribeTokenStats(\n chain: Chain,\n address: string,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) => callback([fromWsTokenStats(data)]),\n });\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenCandles({\n chain: toChainDTO(chain),\n tokenAddress: address,\n resolution: toResolutionDTO(resolution),\n callback: (data: WsCandle) => callback([fromWsCandle(data)]),\n });\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnlList({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletPnl[]) =>\n callback(\n data.map((item) => ({\n chain,\n address: item.walletAddress,\n buys: item.buys,\n buyAmountInUsd: item.buyAmountInUsd,\n sells: item.sells,\n sellAmountInUsd: item.sellAmountInUsd,\n wins: item.wins,\n winRate: item.winRatio,\n totalProfitInUsd: item.pnlInUsd,\n totalProfitRatio: item.pnlRatio,\n avgProfitPerTradeInUsd: item.averagePnlInUsd,\n tokens: item.tokens,\n resolution: item.resolution,\n })),\n ),\n });\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletBalance({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletBalance[]) =>\n callback(\n data.map(\n (it) =>\n ({\n chain,\n walletAddress: it.walletAddress,\n tokenAddress: it.tokenAddress,\n priceInUsd: it.tokenPriceInUsd,\n amount: it.balance,\n }) as API.PortfolioSubscribed,\n ),\n ),\n });\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([\n {\n chain,\n walletAddress: data.walletAddress,\n tokenAddress: data.tokenAddress,\n openTime: data.opentime ? new Date(data.opentime) : undefined,\n closeTime: data.closetime ? new Date(data.closetime) : undefined,\n buys: data.buyCount,\n buyVolumes: data.buyAmount,\n buyVolumesInUsd: data.buyAmountInUsd,\n buyAvgPriceInUsd: data.averageBuyPriceInUsd,\n sells: data.sellCount,\n sellVolumes: data.sellAmount,\n sellVolumesInUsd: data.sellAmountInUsd,\n sellAvgPriceInUsd: data.averageSellPriceInUsd,\n realizedProfitInUsd: data.realizedProfitInUsd,\n realizedProfitRatio: data.realizedProfitRatio,\n unrealizedProfitInUsd: data.unrealizedProfitInUsd,\n unrealizedProfitRatio: data.unrealizedProfitRatio,\n totalProfitInUsd: data.totalRealizedProfitInUsd,\n totalProfitRatio: data.totalRealizedProfitRatio,\n } as API.PortfolioPnlSubscribed,\n ]),\n });\n }\n\n subscribeWalletTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeTokenTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewToken({\n chain: toChainDTO(chain),\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n });\n }\n\n subscribeNewTokensBasic(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewTokensMetadata({\n chain: toChainDTO(chain),\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n });\n }\n\n subscribeNewTokensMarketData(\n chain: Chain,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenMarketDataFromStats)),\n });\n }\n\n subscribeNewTokensStats(\n chain: Chain,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) => callback(data.map(fromWsTokenStats)),\n });\n }\n\n subscribeNewTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeMigratedTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.COMPLETED,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeFinalStretchTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeTrendingTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.HOT,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeStockTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.US_STOCKS,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n","import { PropsWithChildren } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"./DexClientContext\";\n\nexport type DexClientProviderProps = PropsWithChildren<DexClientContextValue>;\n\nexport function DexClientProvider({\n client,\n subscribeClient,\n children,\n}: DexClientProviderProps) {\n return (\n <DexClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/DexClientContext.ts","../src/hooks/useDexClient.ts","../src/hooks/useFinalStretchTokensQuery.ts","../src/hooks/useMigratedTokensQuery.ts","../src/hooks/useNewTokensQuery.ts","../src/hooks/usePresignedUploadUrlQuery.ts","../src/hooks/useSearchTokensQuery.ts","../src/hooks/useSendTxMutation.ts","../src/hooks/useStockTokensQuery.ts","../src/hooks/useSwapRouteQuery.ts","../src/hooks/useTokenCandlesQuery.ts","../src/hooks/useTokenHoldersQuery.ts","../src/hooks/useTokenMarketDataQuery.ts","../src/hooks/useTokenQuery.ts","../src/hooks/useTokenSecurityQuery.ts","../src/hooks/useTokensQuery.ts","../src/hooks/useTokenStatsQuery.ts","../src/hooks/useTokenTradeActivitiesQuery.ts","../src/hooks/useTrendingTokensQuery.ts","../src/hooks/useTxSuccessQuery.ts","../src/hooks/useWalletPnlQuery.ts","../src/hooks/useWalletPortfolioPnlsQuery.ts","../src/hooks/useWalletPortfolioPnlsInfiniteQuery.ts","../src/hooks/useWalletPortfoliosQuery.ts","../src/hooks/useWalletPortfoliosInfiniteQuery.ts","../src/hooks/useWalletTradeActivitiesQuery.ts","../src/hooks/useTokenStatsSubscription.ts","../src/hooks/useTokenCandlesSubscription.ts","../src/hooks/useTokenMarketDataSubscription.ts","../src/hooks/useTokenTradeActivitiesSubscription.ts","../src/hooks/useWalletPnlSubscription.ts","../src/hooks/useWalletPortfoliosSubscription.ts","../src/hooks/useWalletPortfolioPnlsSubscription.ts","../src/hooks/useWalletTradeActivitiesSubscription.ts","../src/hooks/useNewTokensSubscription.ts","../src/hooks/useNewTokensBasicSubscription.ts","../src/hooks/useNewTokensMarketDataSubscription.ts","../src/hooks/useNewTokensStatsSubscription.ts","../src/hooks/useNewTokensDataSubscription.ts","../src/hooks/useMigratedTokensDataSubscription.ts","../src/hooks/useFinalStretchTokensDataSubscription.ts","../src/hooks/useTrendingTokensDataSubscription.ts","../src/hooks/useStockTokensDataSubscription.ts","../src/utils.ts","../src/client.ts","../src/DexClientProvider.tsx"],"names":["version_default","DexClientContext","createContext","useDexClient","context","useContext","finalStretchTokensQueryKey","params","fetchFinalStretchTokens","client","chain","options","useFinalStretchTokensQuery","useQuery","migratedTokensQueryKey","fetchMigratedTokens","useMigratedTokensQuery","newTokensQueryKey","fetchNewTokens","useNewTokensQuery","fetchPresignedUploadUrl","usePresignedUploadUrlQuery","searchTokensQueryKey","fetchSearchTokens","useSearchTokensQuery","sendTx","useSendTxMutation","useMutation","stockTokensQueryKey","fetchStockTokens","useStockTokensQuery","swapRouteQueryKey","fetchSwapRoute","useSwapRouteQuery","tokenCandlesQueryKey","fetchTokenCandles","address","resolution","useTokenCandlesQuery","tokenHoldersQueryKey","fetchTokenHolders","useTokenHoldersQuery","tokenMarketDataQueryKey","fetchTokenMarketData","useTokenMarketDataQuery","tokenQueryKey","fetchToken","useTokenQuery","tokenSecurityQueryKey","fetchTokenSecurity","useTokenSecurityQuery","tokensQueryKey","fetchTokens","addresses","useTokensQuery","tokenStatsQueryKey","fetchTokenStats","useTokenStatsQuery","tokenTradeActivitiesQueryKey","fetchTokenTradeActivities","useTokenTradeActivitiesQuery","trendingTokensQueryKey","fetchTrendingTokens","useTrendingTokensQuery","txSuccessQueryKey","fetchTxSuccess","txHash","timeout","useTxSuccessQuery","walletPnlQueryKey","fetchWalletPnl","useWalletPnlQuery","walletPortfolioPnlsQueryKey","fetchWalletPortfolioPnls","cursor","limit","useWalletPortfolioPnlsQuery","walletPortfolioPnlsInfiniteQueryKey","useWalletPortfolioPnlsInfiniteQuery","useInfiniteQuery","pageParam","lastPage","walletPortfoliosQueryKey","fetchWalletPortfolios","useWalletPortfoliosQuery","walletPortfoliosInfiniteQueryKey","useWalletPortfoliosInfiniteQuery","walletTradeActivitiesQueryKey","fetchWalletTradeActivities","useWalletTradeActivitiesQuery","useTokenStatsSubscription","callback","subscribeClient","callbackRef","useRef","useEffect","subscription","stats","useTokenCandlesSubscription","candles","useTokenMarketDataSubscription","marketDatas","useTokenTradeActivitiesSubscription","trades","useWalletPnlSubscription","pnls","useWalletPortfoliosSubscription","portfolios","useWalletPortfolioPnlsSubscription","portfolioPnls","useWalletTradeActivitiesSubscription","useNewTokensSubscription","tokens","useNewTokensBasicSubscription","useNewTokensMarketDataSubscription","useNewTokensStatsSubscription","useNewTokensDataSubscription","data","useMigratedTokensDataSubscription","useFinalStretchTokensDataSubscription","useTrendingTokensDataSubscription","useStockTokensDataSubscription","toChainDTO","Chain","ChainSymbol","toResolutionDTO","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","GetNewTokensSortBy","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","fromTokenStatsDTO","fromTokenMarketDataDTO","fromTokenLiquidityDTO","parseTokenStatsByResolution","toOptionalNumber","value","period","fromTokenCandle","fromResolutionDTO","fromTokenSecurity","toSwapRouteInput","API","SwapRouteInputSwapMode","toSendTxInput","fromTokenHolderPage","holder","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","item","fromWalletPnlSummary","fromPnlDetailsPage","fromTradePage","fromTradeDetailDTO","isBuy","fromTokenSubscribed","fromTokenMetadataSubscribed","fromWsCandle","fromWsTokenStats","timeframes","record","result","tf","buys","sells","buyers","sellers","buyVolumeInUsd","sellVolumeInUsd","price","openInUsd","closeInUsd","totalTrades","totalTraders","totalVolumesInUsd","priceChange","fromWsTokenMarketDataFromStats","fromWsTokenDataSubscribed","fromWsTradeActivity","Client","accessToken","ChainStreamClient","token","security","holders","marketData","parseLaunchPlatformFromFilters","tokenPage","route","netWorth","pnl","detailsPage","tradePage","_chain","_address","_callback","WsChannelType","filter","DexClientProvider","children","jsx"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.31\";\n}\n\nexport default \"0.1.31\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface DexClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const DexClientContext = createContext<DexClientContextValue>(\n {} as DexClientContextValue,\n);\n","import { useContext } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"../DexClientContext\";\n\nexport function useDexClient(): DexClientContextValue {\n const context = useContext(DexClientContext);\n if (!context) {\n throw new Error(\"useDexClient must be used within an DexClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensQueryParams\n extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function finalStretchTokensQueryKey(\n params: UseFinalStretchTokensQueryParams,\n): string[] {\n return [\n \"finalStretchTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchFinalStretchTokens(\n client: API.IClient,\n { chain, ...options }: UseFinalStretchTokensQueryParams,\n) {\n return await client.getFinalStretchTokens(chain, options);\n}\n\nexport function useFinalStretchTokensQuery(\n params: UseFinalStretchTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: finalStretchTokensQueryKey(params),\n queryFn: async () => fetchFinalStretchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function migratedTokensQueryKey(\n params: UseMigratedTokensQueryParams,\n): string[] {\n return [\n \"migratedTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchMigratedTokens(\n client: API.IClient,\n { chain, ...options }: UseMigratedTokensQueryParams,\n) {\n return await client.getMigratedTokens(chain, options);\n}\n\nexport function useMigratedTokensQuery(\n params: UseMigratedTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: migratedTokensQueryKey(params),\n queryFn: async () => fetchMigratedTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function newTokensQueryKey(params: UseNewTokensQueryParams): string[] {\n return [\n \"newTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchNewTokens(\n client: API.IClient,\n { chain, ...options }: UseNewTokensQueryParams,\n) {\n return await client.getNewTokens(chain, options);\n}\n\nexport function useNewTokensQuery(\n params: UseNewTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: newTokensQueryKey(params),\n queryFn: async () => fetchNewTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport async function fetchPresignedUploadUrl(client: API.IClient) {\n return await client.getPresignedUploadUrl();\n}\n\nexport function usePresignedUploadUrlQuery(\n options: Omit<\n UseQueryOptions<string, Error, string, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: [\"presignedUploadUrl\"],\n queryFn: async () => fetchPresignedUploadUrl(client),\n staleTime: 0,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSearchTokensQueryParams = API.SearchTokensOptions;\n\nexport function searchTokensQueryKey(\n params: UseSearchTokensQueryParams,\n): string[] {\n return [\n \"searchTokens\",\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n JSON.stringify((params.chains ?? []).sort()),\n params.keyword ?? \"\",\n JSON.stringify(params.filters ?? []),\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n ];\n}\n\nexport async function fetchSearchTokens(\n client: API.IClient,\n params: UseSearchTokensQueryParams,\n) {\n return await client.searchTokens(params);\n}\n\nexport function useSearchTokensQuery(\n params: UseSearchTokensQueryParams,\n options: Omit<\n UseQueryOptions<\n API.SearchTokenCursorList,\n Error,\n API.SearchTokenCursorList,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: searchTokensQueryKey(params),\n queryFn: async () => fetchSearchTokens(client, params),\n ...options,\n });\n}\n","import { useMutation, UseMutationOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSendTxMutationParams = API.SendTxParams;\n\nexport async function sendTx(\n client: API.IClient,\n params: UseSendTxMutationParams,\n) {\n return await client.sendTx(params);\n}\n\nexport function useSendTxMutation(\n options: Omit<\n UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>,\n \"mutationFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useMutation({\n mutationFn: async (params: UseSendTxMutationParams) =>\n sendTx(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function stockTokensQueryKey(\n params: UseStockTokensQueryParams,\n): string[] {\n return [\n \"stockTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchStockTokens(\n client: API.IClient,\n { chain, ...options }: UseStockTokensQueryParams,\n) {\n return await client.getStockTokens(chain, options);\n}\n\nexport function useStockTokensQuery(\n params: UseStockTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: stockTokensQueryKey(params),\n queryFn: async () => fetchStockTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSwapRouteQueryParams = API.SwapParams;\n\nexport function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[] {\n return [\n \"swapRoute\",\n params.chain,\n params.userAddress,\n params.input,\n params.output,\n params.mode,\n params.amount,\n params.slippage ? `${params.slippage}` : \"\",\n params.priorityFee ?? \"\",\n params.tipFee ?? \"\",\n params.isAntiMev !== undefined ? `${params.isAntiMev}` : \"\",\n ];\n}\n\nexport async function fetchSwapRoute(\n client: API.IClient,\n params: UseSwapRouteQueryParams,\n) {\n return await client.swapRoute(params);\n}\n\nexport function useSwapRouteQuery(\n params: UseSwapRouteQueryParams,\n options: Omit<\n UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: swapRouteQueryKey(params),\n queryFn: async () => fetchSwapRoute(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function tokenCandlesQueryKey(\n params: UseTokenCandlesQueryParams,\n): string[] {\n return [\n \"tokenCandles\",\n params.chain,\n params.address,\n params.resolution,\n params.after?.toString() ?? \"\",\n params.before?.toString() ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n ];\n}\n\nexport async function fetchTokenCandles(\n client: API.IClient,\n { chain, address, resolution, ...options }: UseTokenCandlesQueryParams,\n) {\n return await client.getTokenCandles(chain, address, resolution, options);\n}\n\nexport function useTokenCandlesQuery(\n params: UseTokenCandlesQueryParams,\n options: Omit<\n UseQueryOptions<Array<TokenCandle>, Error, Array<TokenCandle>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenCandlesQueryKey(params),\n queryFn: async () => fetchTokenCandles(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenHolder } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenHoldersQueryParams extends API.CursorListOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenHoldersQueryKey(\n params: UseTokenHoldersQueryParams,\n): string[] {\n return [\n \"tokenHolders\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n ];\n}\n\nexport async function fetchTokenHolders(\n client: API.IClient,\n { chain, address, ...options }: UseTokenHoldersQueryParams,\n) {\n return await client.getTokenHolders(chain, address, options);\n}\n\nexport function useTokenHoldersQuery(\n params: UseTokenHoldersQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TokenHolder>,\n Error,\n API.CursorList<TokenHolder>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenHoldersQueryKey(params),\n queryFn: async () => fetchTokenHolders(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenMarketDataQueryKey(\n params: UseTokenMarketDataQueryParams,\n): string[] {\n return [\"tokenMarketData\", params.chain, params.address];\n}\n\nexport async function fetchTokenMarketData(\n client: API.IClient,\n { chain, address }: UseTokenMarketDataQueryParams,\n) {\n return await client.getTokenMarketData(chain, address);\n}\n\nexport function useTokenMarketDataQuery(\n params: UseTokenMarketDataQueryParams,\n options: Omit<\n UseQueryOptions<TokenMarketData, Error, TokenMarketData, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenMarketDataQueryKey(params),\n queryFn: async () => fetchTokenMarketData(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenQueryKey(params: UseTokenQueryParams): string[] {\n return [\"token\", params.chain, params.address];\n}\n\nexport async function fetchToken(\n client: API.IClient,\n { chain, address }: UseTokenQueryParams,\n) {\n return await client.getToken(chain, address);\n}\n\nexport function useTokenQuery(\n params: UseTokenQueryParams,\n options: Omit<\n UseQueryOptions<Token, Error, Token, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenQueryKey(params),\n queryFn: async () => fetchToken(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenSecurity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenSecurityQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenSecurityQueryKey(\n params: UseTokenSecurityQueryParams,\n): string[] {\n return [\"tokenSecurity\", params.chain, params.address];\n}\n\nexport async function fetchTokenSecurity(\n client: API.IClient,\n { chain, address }: UseTokenSecurityQueryParams,\n) {\n return await client.getTokenSecurity(chain, address);\n}\n\nexport function useTokenSecurityQuery(\n params: UseTokenSecurityQueryParams,\n options: Omit<\n UseQueryOptions<TokenSecurity, Error, TokenSecurity, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenSecurityQueryKey(params),\n queryFn: async () => fetchTokenSecurity(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokensQueryParams {\n chain: Chain;\n addresses: Array<string>;\n}\n\nexport function tokensQueryKey(params: UseTokensQueryParams): string[] {\n return [\"tokens\", params.chain, params.addresses.sort().join(\",\")];\n}\n\nexport async function fetchTokens(\n client: API.IClient,\n { chain, addresses }: UseTokensQueryParams,\n) {\n return await client.getTokens(chain, addresses);\n}\n\nexport function useTokensQuery(\n params: UseTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokensQueryKey(params),\n queryFn: async () => fetchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenStatsQueryKey(params: UseTokenStatsQueryParams): string[] {\n return [\"tokenStats\", params.chain, params.address];\n}\n\nexport async function fetchTokenStats(\n client: API.IClient,\n { chain, address }: UseTokenStatsQueryParams,\n) {\n return await client.getTokenStats(chain, address);\n}\n\nexport function useTokenStatsQuery(\n params: UseTokenStatsQueryParams,\n options: Omit<\n UseQueryOptions<TokenStats, Error, TokenStats, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenStatsQueryKey(params),\n queryFn: async () => fetchTokenStats(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenTradeActivitiesQueryKey(\n params: UseTokenTradeActivitiesQueryParams,\n): string[] {\n return [\n \"tokenTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchTokenTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseTokenTradeActivitiesQueryParams,\n) {\n return await client.getTokenTradeActivities(chain, address, options);\n}\n\nexport function useTokenTradeActivitiesQuery(\n params: UseTokenTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenTradeActivitiesQueryKey(params),\n queryFn: async () => fetchTokenTradeActivities(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\";\n}\n\nexport function trendingTokensQueryKey(\n params: UseTrendingTokensQueryParams,\n): string[] {\n return [\n \"trendingTokens\",\n params.chain,\n params.resolution,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchTrendingTokens(\n client: API.IClient,\n { chain, resolution, ...options }: UseTrendingTokensQueryParams,\n) {\n return await client.getTrendingTokens(chain, resolution, options);\n}\n\nexport function useTrendingTokensQuery(\n params: UseTrendingTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: trendingTokensQueryKey(params),\n queryFn: async () => fetchTrendingTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTxSuccessQueryParams {\n chain: Chain;\n txHash: string;\n timeout?: number;\n}\n\nexport function txSuccessQueryKey(params: UseTxSuccessQueryParams): string[] {\n return [\n \"txSuccess\",\n params.chain,\n params.txHash,\n params.timeout ? `${params.timeout}` : \"\",\n ];\n}\n\nexport async function fetchTxSuccess(\n client: API.IClient,\n { chain, txHash, timeout }: UseTxSuccessQueryParams,\n) {\n return await client.checkTxSuccess(chain, txHash, timeout);\n}\n\nexport function useTxSuccessQuery(\n params: UseTxSuccessQueryParams,\n options: Omit<\n UseQueryOptions<boolean, Error, boolean, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: txSuccessQueryKey(params),\n queryFn: async () => fetchTxSuccess(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPnl } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlQueryParams {\n chain: Chain;\n address: string;\n resolution?: string;\n}\n\nexport function walletPnlQueryKey(params: UseWalletPnlQueryParams): string[] {\n return [\n \"walletPnl\",\n params.chain,\n params.address,\n params.resolution ?? \"all\",\n ];\n}\n\nexport async function fetchWalletPnl(\n client: API.IClient,\n { chain, address, resolution }: UseWalletPnlQueryParams,\n) {\n return await client.getWalletPnl(chain, address, resolution);\n}\n\nexport function useWalletPnlQuery(\n params: UseWalletPnlQueryParams,\n options: Omit<\n UseQueryOptions<WalletPnl, Error, WalletPnl, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPnlQueryKey(params),\n queryFn: async () => fetchWalletPnl(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nexport function walletPortfolioPnlsQueryKey(\n params: UseWalletPortfolioPnlsQueryParams,\n): string[] {\n return [\n \"walletPortfolioPnls\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n String(params.limit ?? \"\"),\n ];\n}\n\nexport async function fetchWalletPortfolioPnls(\n client: API.IClient,\n { chain, address, cursor, limit }: UseWalletPortfolioPnlsQueryParams,\n) {\n return await client.getWalletPortfolioPnls(chain, address, { cursor, limit });\n}\n\nexport function useWalletPortfolioPnlsQuery(\n params: UseWalletPortfolioPnlsQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolioPnls, Error, WalletPortfolioPnls, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfolioPnlsQueryKey(params),\n queryFn: async () => fetchWalletPortfolioPnls(client, params),\n ...options,\n });\n}\n","import {\n useInfiniteQuery,\n type InfiniteData,\n type UseInfiniteQueryOptions,\n} from \"@tanstack/react-query\";\nimport { Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nexport function walletPortfolioPnlsInfiniteQueryKey(\n params: UseWalletPortfolioPnlsInfiniteQueryParams,\n): string[] {\n return [\n \"walletPortfolioPnls\",\n \"infinite\",\n params.chain,\n params.address,\n String(params.limit ?? \"\"),\n ];\n}\n\nexport function useWalletPortfolioPnlsInfiniteQuery(\n params: UseWalletPortfolioPnlsInfiniteQueryParams,\n options: Omit<\n UseInfiniteQueryOptions<\n WalletPortfolioPnls,\n Error,\n InfiniteData<WalletPortfolioPnls>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n > = {},\n) {\n const { client } = useDexClient();\n return useInfiniteQuery({\n queryKey: walletPortfolioPnlsInfiniteQueryKey(params),\n queryFn: async ({ pageParam }) =>\n client.getWalletPortfolioPnls(params.chain, params.address, {\n cursor: pageParam,\n limit: params.limit ?? 100,\n }),\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage) =>\n lastPage.hasNext ? lastPage.endCursor : undefined,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\n \"walletPortfolios\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n String(params.limit ?? \"\"),\n ];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address, cursor, limit }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address, { cursor, limit });\n}\n\nexport function useWalletPortfoliosQuery(\n params: UseWalletPortfoliosQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolios, Error, WalletPortfolios, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfoliosQueryKey(params),\n queryFn: async () => fetchWalletPortfolios(client, params),\n ...options,\n });\n}\n","import {\n useInfiniteQuery,\n type InfiniteData,\n type UseInfiniteQueryOptions,\n} from \"@tanstack/react-query\";\nimport { Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nexport function walletPortfoliosInfiniteQueryKey(\n params: UseWalletPortfoliosInfiniteQueryParams,\n): string[] {\n return [\n \"walletPortfolios\",\n \"infinite\",\n params.chain,\n params.address,\n String(params.limit ?? \"\"),\n ];\n}\n\nexport function useWalletPortfoliosInfiniteQuery(\n params: UseWalletPortfoliosInfiniteQueryParams,\n options: Omit<\n UseInfiniteQueryOptions<\n WalletPortfolios,\n Error,\n InfiniteData<WalletPortfolios>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n > = {},\n) {\n const { client } = useDexClient();\n return useInfiniteQuery({\n queryKey: walletPortfoliosInfiniteQueryKey(params),\n queryFn: async ({ pageParam }) =>\n client.getWalletPortfolios(params.chain, params.address, {\n cursor: pageParam,\n limit: params.limit ?? 100,\n }),\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage) =>\n lastPage.hasNext ? lastPage.endCursor : undefined,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function walletTradeActivitiesQueryKey(\n params: UseWalletTradeActivitiesQueryParams,\n): string[] {\n return [\n \"walletTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchWalletTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseWalletTradeActivitiesQueryParams,\n) {\n return await client.getWalletTradeActivities(chain, address, options);\n}\n\nexport function useWalletTradeActivitiesQuery(\n params: UseWalletTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenStatsSubscription(\n params: UseTokenStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenStats(\n params.chain,\n params.address,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesSubscriptionParams {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function useTokenCandlesSubscription(\n params: UseTokenCandlesSubscriptionParams,\n callback: (candles: Array<TokenCandle>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenCandles(\n params.chain,\n params.address,\n params.resolution,\n (candles) => callbackRef.current(candles),\n );\n return () => subscription.unsubscribe();\n }, [\n subscribeClient,\n params.chain,\n params.address,\n params.resolution,\n options?.enabled,\n ]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenMarketDataSubscription(\n params: UseTokenMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenMarketData(\n params.chain,\n params.address,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenTradeActivitiesSubscription(\n params: UseTokenTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPnlSubscription(\n params: UseWalletPnlSubscriptionParams,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPnl(\n params.chain,\n params.address,\n (pnls) => callbackRef.current(pnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfoliosSubscription(\n params: UseWalletPortfoliosSubscriptionParams,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolios(\n params.chain,\n params.address,\n (portfolios) => callbackRef.current(portfolios),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfolioPnlsSubscription(\n params: UseWalletPortfolioPnlsSubscriptionParams,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolioPnls(\n params.chain,\n params.address,\n (portfolioPnls) => callbackRef.current(portfolioPnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletTradeActivitiesSubscription(\n params: UseWalletTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensSubscription(\n params: UseNewTokensSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokens(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensBasicSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensBasicSubscription(\n params: UseNewTokensBasicSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensBasic(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensMarketDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensMarketDataSubscription(\n params: UseNewTokensMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensMarketData(\n params.chain,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensStatsSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensStatsSubscription(\n params: UseNewTokensStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensStats(\n params.chain,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensDataSubscription(\n params: UseNewTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useMigratedTokensDataSubscription(\n params: UseMigratedTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeMigratedTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useFinalStretchTokensDataSubscription(\n params: UseFinalStretchTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeFinalStretchTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useTrendingTokensDataSubscription(\n params: UseTrendingTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTrendingTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useStockTokensDataSubscription(\n params: UseStockTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeStockTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import {\n Token as TokenDTO,\n Resolution,\n Candle,\n TokenStat,\n TokenHolderPage,\n TokenMarketData as TokenMarketDataDTO,\n GetNewTokensSortBy,\n FilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SwapRouteInputSwapMode,\n SendTxInput,\n SendTxResponse,\n WalletNetWorthPage,\n TradePage,\n DexPoolDTO,\n ChainSymbol,\n TokenCreatorsDTO,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsTokenHolder as WsTokenHolderDTO,\n WalletPnlSummaryDTO,\n PnlDetailsPage,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n TradeActivity,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber } from \"@liberfi.io/utils\";\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n switch (direction) {\n case \"asc\":\n return \"ASC\";\n case \"desc\":\n return \"DESC\";\n }\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return GetNewTokensSortBy.marketDatapriceInUsd;\n case \"priceChange1m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return GetNewTokensSortBy.marketDatamarketCapInUsd;\n case \"tvl\":\n return GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return GetNewTokensSortBy.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return GetNewTokensSortBy.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return GetNewTokensSortBy.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return GetNewTokensSortBy.marketDatatop100HoldingsRatio;\n case \"holders\":\n return GetNewTokensSortBy.marketDataholders;\n case \"creatorsHoldings\":\n return GetNewTokensSortBy.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return GetNewTokensSortBy.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return GetNewTokensSortBy.statsbuys1m;\n case \"buys5m\":\n return GetNewTokensSortBy.statsbuys5m;\n case \"buys15m\":\n return GetNewTokensSortBy.statsbuys15m;\n case \"buys30m\":\n return GetNewTokensSortBy.statsbuys30m;\n case \"buys1h\":\n return GetNewTokensSortBy.statsbuys1h;\n case \"buys4h\":\n return GetNewTokensSortBy.statsbuys4h;\n case \"buys24h\":\n return GetNewTokensSortBy.statsbuys24h;\n case \"sells1m\":\n return GetNewTokensSortBy.statssells1m;\n case \"sells5m\":\n return GetNewTokensSortBy.statssells5m;\n case \"sells15m\":\n return GetNewTokensSortBy.statssells15m;\n case \"sells30m\":\n return GetNewTokensSortBy.statssells30m;\n case \"sells1h\":\n return GetNewTokensSortBy.statssells1h;\n case \"sells4h\":\n return GetNewTokensSortBy.statssells4h;\n case \"sells24h\":\n return GetNewTokensSortBy.statssells24h;\n case \"trades1m\":\n return GetNewTokensSortBy.statstrades1m;\n case \"trades5m\":\n return GetNewTokensSortBy.statstrades5m;\n case \"trades1h\":\n return GetNewTokensSortBy.statstrades1h;\n case \"trades4h\":\n return GetNewTokensSortBy.statstrades4h;\n case \"trades24h\":\n return GetNewTokensSortBy.statstrades24h;\n case \"traders1m\":\n return GetNewTokensSortBy.statstraders1m;\n case \"traders5m\":\n return GetNewTokensSortBy.statstraders5m;\n case \"traders1h\":\n return GetNewTokensSortBy.statstraders1h;\n case \"traders4h\":\n return GetNewTokensSortBy.statstraders4h;\n case \"traders24h\":\n return GetNewTokensSortBy.statstraders24h;\n case \"volumes1m\":\n return GetNewTokensSortBy.statsvolumesInUsd1m;\n case \"volumes5m\":\n return GetNewTokensSortBy.statsvolumesInUsd5m;\n case \"volumes1h\":\n return GetNewTokensSortBy.statsvolumesInUsd1h;\n case \"volumes4h\":\n return GetNewTokensSortBy.statsvolumesInUsd4h;\n case \"volumes24h\":\n return GetNewTokensSortBy.statsvolumesInUsd24h;\n case \"createdAt\":\n return GetNewTokensSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<FilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as FilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: TokenCreatorsDTO): TokenCreator {\n return {\n address: input.address,\n share: input.share,\n isVerified: input.isVerified,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress,\n protocolFamily: input.extra?.launchFromProtocolFamily,\n },\n migrateProgress: input.marketData.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress,\n protocolFamily: input.extra?.migratedToProtocolFamily,\n poolAddress: input.extra?.migratedToPoolAddress,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias ? { ...input.socialMedias } : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n liquidities: input.liquidity?.map(fromTokenLiquidityDTO),\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: TokenStat): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: TokenStat,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPoolDTO): TokenLiquidity {\n return {\n image: input.image,\n poolAddress: input.poolAddress,\n programAddress: input.programAddress,\n protocolFamily: input.protocolFamily,\n tvl: input.tvlInSol,\n tvlInUsd: input.tvlInUsd,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: TokenMarketDataDTO,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply,\n marketCap: input.marketCapInSol,\n marketCapInUsd: input.marketCapInUsd,\n price: input.priceInSol,\n priceInUsd: input.priceInUsd,\n tvl: input.totalTvlInSol,\n tvlInUsd: input.totalTvlInUsd,\n holders: parseInt(input.holders),\n top10Holdings: input.top10TotalHoldings,\n top10HoldingsRatio: input.top10HoldingsRatio,\n top50Holdings: input.top50TotalHoldings,\n top50HoldingsRatio: input.top50HoldingsRatio,\n top100Holdings: input.top100TotalHoldings,\n top100HoldingsRatio: input.top100HoldingsRatio,\n bluechipHolders:\n input.bluechipTotalHolders === undefined\n ? undefined\n : parseInt(input.bluechipTotalHolders),\n bluechipHoldings: input.bluechipTotalHoldings,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio,\n kolHolders:\n input.kolTotalHolders === undefined\n ? undefined\n : parseInt(input.kolTotalHolders),\n kolHoldings: input.kolTotalHoldings,\n kolHoldingsRatio: input.kolHoldingsRatio,\n sniperHolders:\n input.sniperTotalHolders === undefined\n ? undefined\n : parseInt(input.sniperTotalHolders),\n sniperHoldings: input.sniperTotalHoldings,\n sniperHoldingsRatio: input.sniperHoldingsRatio,\n proHolders:\n input.proTotalHolders === undefined\n ? undefined\n : parseInt(input.proTotalHolders),\n proHoldings: input.proTotalHoldings,\n proHoldingsRatio: input.proHoldingsRatio,\n insiderHolders:\n input.insiderTotalHolders === undefined\n ? undefined\n : parseInt(input.insiderTotalHolders),\n insiderHoldings: input.insiderTotalHoldings,\n insiderHoldingsRatio: input.insiderHoldingsRatio,\n sandwichHolders:\n input.sandwishTotalHolders === undefined\n ? undefined\n : parseInt(input.sandwishTotalHolders),\n sandwichHoldings: input.sandwishTotalHoldings,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio,\n freshHolders:\n input.freshTotalHolders === undefined\n ? undefined\n : parseInt(input.freshTotalHolders),\n freshHoldings: input.freshTotalHoldings,\n freshHoldingsRatio: input.freshHoldingsRatio,\n bundleHolders:\n input.bundleTotalHolders === undefined\n ? undefined\n : parseInt(input.bundleTotalHolders),\n bundleHoldings: input.bundleTotalHoldings,\n bundleHoldingsRatio: input.bundleHoldingsRatio,\n devHolders:\n input.devTotalHolders === undefined\n ? undefined\n : parseInt(input.devTotalHolders),\n devHoldings: input.devTotalHoldings,\n devHoldingsRatio: input.devHoldingsRatio,\n };\n}\n\nexport function fromTokenCandle(input: Candle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nfunction fromResolutionDTO(resolution: string): TokenResolution {\n if (resolution === \"1d\") return \"24h\";\n return resolution as TokenResolution;\n}\n\nexport function fromTokenSecurity(\n input: Record<string, unknown>,\n): TokenSecurity {\n return {\n hasTransferFee: input.hasTransferFee as boolean | undefined,\n isTransferFeeUpgradable: input.isTransferFeeUpgradable as\n | boolean\n | undefined,\n isTransferable: input.isTransferable as boolean | undefined,\n isFreezable: input.isFreezable as boolean | undefined,\n isClosable: input.isClosable as boolean | undefined,\n };\n}\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n return {\n dex: \"jupiter\" as SwapRouteInput[\"dex\"],\n userAddress: params.userAddress,\n amount: params.amount,\n swapMode: (params.mode === API.SwapMode.EXACT_IN\n ? SwapRouteInputSwapMode.ExactIn\n : SwapRouteInputSwapMode.ExactOut) as SwapRouteInput[\"swapMode\"],\n slippage: params.slippage ?? 1,\n inputMint: params.input,\n outputMint: params.output,\n priorityFee: params.priorityFee,\n };\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n return {\n signedTx: params.serializedTx,\n };\n}\n\nexport function fromTokenHolderPage(\n input: TokenHolderPage,\n): API.CursorList<TokenHolder> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map((holder) => ({\n address: holder.walletAddress,\n amount: holder.amount,\n amountInUsd: holder.amountInUsd,\n ratio: holder.percentage,\n })),\n };\n}\n\nexport function fromTokenPage(\n input: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n total: input.total,\n data: input.data.map(fromTokenDTO),\n extra: input.countsByProtocols,\n };\n}\n\nexport function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute {\n return {\n serializedTx: input.serializedTx,\n plans: [],\n extra: input.routeInfo,\n };\n}\n\nexport function fromSendTxResult(input: SendTxResponse): API.SendTxResult {\n return {\n txHash: input.signature,\n extra: { jobId: input.jobId, elapsedTime: input.elapsedTime },\n };\n}\n\nexport function fromWalletPortfolios(\n chain: Chain,\n input: WalletNetWorthPage,\n): WalletPortfolios {\n const portfolios: Portfolio[] = (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n\n return {\n chain: portfolios[0]?.chain ?? chain,\n address: input.walletAddress,\n balanceInUsd: input.totalValueInUsd,\n balanceInNative: input.totalValueInNative,\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletPnlSummary(\n chain: Chain,\n address: string,\n input: WalletPnlSummaryDTO,\n): WalletPnl {\n return {\n chain,\n address,\n tokens: input.tokens ? Number(input.tokens) : undefined,\n buys: input.buys ? Number(input.buys) : undefined,\n sells: input.sells ? Number(input.sells) : undefined,\n totalTrades: input.totalTrades ? Number(input.totalTrades) : undefined,\n wins: input.wins ? Number(input.wins) : undefined,\n losses: input.losses ? Number(input.losses) : undefined,\n winRate: input.winRate,\n buyAmountInUsd: input.buyAmountInUsd,\n sellAmountInUsd: input.sellAmountInUsd,\n totalCostInUsd: input.totalCostInUsd,\n realizedProfitInUsd: input.realizedProfitInUsd,\n realizedProfitRatio: input.realizedProfitRatio,\n unrealizedProfitInUsd: input.unrealizedProfitInUsd,\n unrealizedProfitRatio: input.unrealizedProfitRatio,\n totalProfitInUsd: input.totalProfitInUsd,\n totalProfitRatio: input.totalProfitRatio,\n avgProfitPerTradeInUsd: input.avgProfitPerTradeInUsd,\n };\n}\n\nexport function fromPnlDetailsPage(\n chain: Chain,\n address: string,\n input: PnlDetailsPage,\n): WalletPortfolioPnls {\n const portfolios: PortfolioPnl[] = input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n\n return {\n chain,\n address,\n tokens: Number(input.summary.tokens),\n buys: Number(input.summary.buys),\n sells: Number(input.summary.sells),\n totalTrades: Number(input.summary.totalTrades),\n wins: Number(input.summary.wins),\n losses: Number(input.summary.losses),\n winRate: input.summary.winRate,\n buyAmountInUsd: input.summary.buyAmountInUsd,\n sellAmountInUsd: input.summary.sellAmountInUsd,\n totalCostInUsd: input.summary.totalCostInUsd,\n realizedProfitInUsd: input.summary.realizedProfitInUsd,\n realizedProfitRatio: input.summary.realizedProfitRatio,\n unrealizedProfitInUsd: input.summary.unrealizedProfitInUsd,\n totalProfitInUsd: input.summary.totalProfitInUsd,\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromTradePage(input: TradePage): API.CursorList<TradeActivity> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTradeDetailDTO),\n };\n}\n\nfunction fromTradeDetailDTO(input: TradePage[\"data\"][number]): TradeActivity {\n const isBuy = input.type.toLowerCase() === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: input.dexProgramAddress,\n protocolFamily: input.dexProtocolFamily,\n image: input.dexImage,\n },\n poolAddress: input.poolAddress,\n status: (input.status as TradeActivity[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromTokenSubscribed(\n chain: Chain,\n input: WsNewToken,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n createdAt: new Date(input.createdAtMs),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n };\n}\n\nexport function fromTokenMetadataSubscribed(\n chain: Chain,\n input: WsTokenMetadata,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n socialMedias: input.socialMedia ? { ...input.socialMedia } : undefined,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : new Date(0),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n migratedTo: input.migratedTo\n ? {\n programAddress: input.migratedTo.programAddress,\n protocolFamily: input.migratedTo.protocolFamily,\n }\n : undefined,\n };\n}\n\n// ====================================\n// WebSocket data conversion functions\n// ====================================\n\nexport function fromWsCandle(input: WsCandle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nexport function fromWsTokenStats(input: WsTokenStat): TokenStats {\n const timeframes = [\"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"4h\", \"24h\"] as const;\n const record = input as unknown as Record<\n string,\n number | string | undefined\n >;\n const result: TokenStats = {};\n\n for (const tf of timeframes) {\n const buys = record[`buys${tf}`] as number | undefined;\n const sells = record[`sells${tf}`] as number | undefined;\n const buyers = record[`buyers${tf}`] as number | undefined;\n const sellers = record[`sellers${tf}`] as number | undefined;\n const buyVolumeInUsd = record[`buyVolumeInUsd${tf}`] as string | undefined;\n const sellVolumeInUsd = record[`sellVolumeInUsd${tf}`] as\n | string\n | undefined;\n const trades = record[`trades${tf}`] as number | undefined;\n const price = record[`price${tf}`] as string | undefined;\n const openInUsd = record[`openInUsd${tf}`] as string | undefined;\n const closeInUsd = record[`closeInUsd${tf}`] as string | undefined;\n\n const hasData =\n buys !== undefined ||\n sells !== undefined ||\n trades !== undefined ||\n price !== undefined;\n\n if (!hasData) continue;\n\n const totalTrades =\n trades ??\n (buys !== undefined && sells !== undefined ? buys + sells : undefined);\n const totalTraders =\n buyers !== undefined && sellers !== undefined\n ? buyers + sellers\n : undefined;\n const totalVolumesInUsd =\n buyVolumeInUsd !== undefined && sellVolumeInUsd !== undefined\n ? new SafeBigNumber(buyVolumeInUsd).plus(sellVolumeInUsd).toString()\n : undefined;\n const priceChange =\n openInUsd && closeInUsd && new SafeBigNumber(openInUsd).gt(0)\n ? new SafeBigNumber(closeInUsd)\n .minus(openInUsd)\n .div(openInUsd)\n .toString()\n : undefined;\n\n result[tf] = {\n buys,\n sells,\n trades: totalTrades,\n buyers,\n sellers,\n traders: totalTraders,\n buyVolumesInUsd: buyVolumeInUsd,\n sellVolumesInUsd: sellVolumeInUsd,\n volumesInUsd: totalVolumesInUsd,\n openPriceInUsd: openInUsd,\n closePriceInUsd: closeInUsd,\n priceInUsd: price ?? closeInUsd,\n priceChange,\n };\n }\n\n return result;\n}\n\nexport function fromWsTokenMarketDataFromStats(\n input: WsTokenStat,\n): TokenMarketData {\n return {\n priceInUsd: input.price,\n };\n}\n\nexport function fromWsTokenDataSubscribed(\n input: WsTokenStat,\n): API.TokenDataSubscribed {\n return {\n address: input.address,\n stats: fromWsTokenStats(input),\n marketData: fromWsTokenMarketDataFromStats(input),\n };\n}\n\nexport function fromWsTokenMarketDataFromHolder(\n input: WsTokenHolderDTO,\n): Partial<TokenMarketData> {\n return {\n holders: input.holders,\n top10Holdings: input.top10HoldersAmount,\n top10HoldingsRatio: input.top10HoldersRatio,\n top50Holdings: input.top50HoldersAmount,\n top50HoldingsRatio: input.top50HoldersRatio,\n top100Holdings: input.top100HoldersAmount,\n top100HoldingsRatio: input.top100HoldersRatio,\n devHolders:\n input.balanceTagDevHolders === undefined\n ? undefined\n : input.balanceTagDevHolders,\n devHoldings: input.balanceTagDevAmount,\n devHoldingsRatio: input.balanceTagDevRatio,\n sniperHolders:\n input.balanceTagSniperHolders === undefined\n ? undefined\n : input.balanceTagSniperHolders,\n sniperHoldings: input.balanceTagSniperAmount,\n sniperHoldingsRatio: input.balanceTagSniperRatio,\n freshHolders:\n input.balanceTagFreshHolders === undefined\n ? undefined\n : input.balanceTagFreshHolders,\n freshHoldings: input.balanceTagFreshAmount,\n freshHoldingsRatio: input.balanceTagFreshRatio,\n bundleHolders:\n input.balanceTagBundleHolders === undefined\n ? undefined\n : input.balanceTagBundleHolders,\n bundleHoldings: input.balanceTagBundleAmount,\n bundleHoldingsRatio: input.balanceTagBundleRatio,\n sandwichHolders:\n input.balanceTagSandwichHolders === undefined\n ? undefined\n : input.balanceTagSandwichHolders,\n sandwichHoldings: input.balanceTagSandwichAmount,\n sandwichHoldingsRatio: input.balanceTagSandwichRatio,\n };\n}\n\nexport function fromWsTradeActivity(\n chain: Chain,\n input: WsTradeActivity,\n): TradeActivity {\n const isBuy = input.kind.toLowerCase() === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n","import {\n ChainStreamClient,\n ChainStreamClientOptions,\n TokenProvider,\n ChainSymbol,\n GetFinalStretchTokensSortBy,\n GetFinalStretchTokensSortDirection,\n GetHotTokensSortBy,\n GetHotTokensSortDirection,\n GetMigratedTokensSortBy,\n GetMigratedTokensSortDirection,\n GetNewTokensSortBy,\n GetNewTokensSortDirection,\n GetStocksTokensSortBy,\n GetStocksTokensSortDirection,\n GetTradesType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsChannelType,\n WsWalletPnl,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TradeActivity,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n fromWsCandle,\n fromWsTokenStats,\n fromWsTokenMarketDataFromStats,\n fromWsTokenDataSubscribed,\n fromWsTradeActivity,\n fromWalletPnlSummary,\n fromPnlDetailsPage,\n} from \"./utils\";\n\nexport type ClientOptions = ChainStreamClientOptions;\n\nexport type ClientTokenProvider = TokenProvider | string;\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map(fromTokenCandle);\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(toChainDTO(chain), {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetNewTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetNewTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetFinalStretchTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetFinalStretchTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetMigratedTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetMigratedTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetHotTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetHotTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetStocksTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetStocksTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { result } = await this._client.waitForJob<{\n id: string;\n status: string;\n result: { success: boolean };\n }>(txHash, timeout);\n return result.success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios> {\n const netWorth = await this._client.wallet.getNetWorth(\n toChainDTO(chain),\n address,\n { cursor: options?.cursor, limit: options?.limit ?? 100 },\n );\n return fromWalletPortfolios(chain, netWorth);\n }\n\n async getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl> {\n const pnl = await this._client.wallet.getPnl(\n toChainDTO(chain),\n address,\n resolution\n ? { resolution: resolution as \"1d\" | \"7d\" | \"30d\" | \"all\" }\n : undefined,\n );\n return fromWalletPnlSummary(chain, address, pnl);\n }\n\n async getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls> {\n const detailsPage = await this._client.wallet.getPnlDetails(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit ?? 100,\n },\n );\n return fromPnlDetailsPage(chain, address, detailsPage);\n }\n\n async getWalletTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n walletAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getTokenTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n tokenAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n return await this._client.ipfs.presign();\n }\n\n subscribeTokenBasic(\n _chain: Chain,\n _address: string,\n _callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\n \"subscribeTokenBasic is not supported by ChainStream backend. \" +\n \"Token basic info (name, symbol, image) rarely changes in real-time.\",\n );\n }\n\n subscribeTokenMarketData(\n chain: Chain,\n address: string,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) =>\n callback([fromWsTokenMarketDataFromStats(data)]),\n });\n }\n\n subscribeTokenStats(\n chain: Chain,\n address: string,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) => callback([fromWsTokenStats(data)]),\n });\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenCandles({\n chain: toChainDTO(chain),\n tokenAddress: address,\n resolution: toResolutionDTO(resolution),\n callback: (data: WsCandle) => callback([fromWsCandle(data)]),\n });\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnlList({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletPnl[]) =>\n callback(\n data.map((item) => ({\n chain,\n address: item.walletAddress,\n buys: item.buys,\n buyAmountInUsd: item.buyAmountInUsd,\n sells: item.sells,\n sellAmountInUsd: item.sellAmountInUsd,\n wins: item.wins,\n winRate: item.winRatio,\n totalProfitInUsd: item.pnlInUsd,\n totalProfitRatio: item.pnlRatio,\n avgProfitPerTradeInUsd: item.averagePnlInUsd,\n tokens: item.tokens,\n resolution: item.resolution,\n })),\n ),\n });\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletBalance({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletBalance[]) =>\n callback(\n data.map(\n (it) =>\n ({\n chain,\n walletAddress: it.walletAddress,\n tokenAddress: it.tokenAddress,\n priceInUsd: it.tokenPriceInUsd,\n amount: it.balance,\n }) as API.PortfolioSubscribed,\n ),\n ),\n });\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([\n {\n chain,\n walletAddress: data.walletAddress,\n tokenAddress: data.tokenAddress,\n openTime: data.opentime ? new Date(data.opentime) : undefined,\n closeTime: data.closetime ? new Date(data.closetime) : undefined,\n buys: data.buyCount,\n buyVolumes: data.buyAmount,\n buyVolumesInUsd: data.buyAmountInUsd,\n buyAvgPriceInUsd: data.averageBuyPriceInUsd,\n sells: data.sellCount,\n sellVolumes: data.sellAmount,\n sellVolumesInUsd: data.sellAmountInUsd,\n sellAvgPriceInUsd: data.averageSellPriceInUsd,\n realizedProfitInUsd: data.realizedProfitInUsd,\n realizedProfitRatio: data.realizedProfitRatio,\n unrealizedProfitInUsd: data.unrealizedProfitInUsd,\n unrealizedProfitRatio: data.unrealizedProfitRatio,\n totalProfitInUsd: data.totalRealizedProfitInUsd,\n totalProfitRatio: data.totalRealizedProfitRatio,\n } as API.PortfolioPnlSubscribed,\n ]),\n });\n }\n\n subscribeWalletTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeTokenTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewToken({\n chain: toChainDTO(chain),\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n });\n }\n\n subscribeNewTokensBasic(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewTokensMetadata({\n chain: toChainDTO(chain),\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n });\n }\n\n subscribeNewTokensMarketData(\n chain: Chain,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenMarketDataFromStats)),\n });\n }\n\n subscribeNewTokensStats(\n chain: Chain,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) => callback(data.map(fromWsTokenStats)),\n });\n }\n\n subscribeNewTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeMigratedTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.COMPLETED,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeFinalStretchTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeTrendingTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.HOT,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeStockTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.US_STOCKS,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n","import { PropsWithChildren } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"./DexClientContext\";\n\nexport type DexClientProviderProps = PropsWithChildren<DexClientContextValue>;\n\nexport function DexClientProvider({\n client,\n subscribeClient,\n children,\n}: DexClientProviderProps) {\n return (\n <DexClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}