@liberfi.io/react 0.1.2 → 0.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../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/useWalletPortfoliosByTokensQuery.ts","../src/hooks/useWalletPortfoliosInfiniteQuery.ts","../src/hooks/useWalletPortfolioPnlsByTokensQuery.ts","../src/hooks/useWalletTradeActivitiesQuery.ts","../src/hooks/useTokenSubscription.ts","../src/hooks/useTokenCandlesSubscription.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/useTrendingTokensSubscription.ts","../src/hooks/useMigratedTokensSubscription.ts","../src/hooks/useFinalStretchTokensSubscription.ts","../src/hooks/useStockTokensSubscription.ts","../src/DexClientProvider.tsx"],"names":["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","walletPortfoliosByTokensQueryKey","fetchWalletPortfoliosByTokens","tokenAddresses","useWalletPortfoliosByTokensQuery","walletPortfoliosInfiniteQueryKey","useWalletPortfoliosInfiniteQuery","walletPortfolioPnlsByTokensQueryKey","fetchWalletPortfolioPnlsByTokens","useWalletPortfolioPnlsByTokensQuery","walletTradeActivitiesQueryKey","fetchWalletTradeActivities","useWalletTradeActivitiesQuery","useTokenSubscription","callback","subscribeClient","callbackRef","useRef","useEffect","subscription","data","useTokenCandlesSubscription","candles","useTokenTradeActivitiesSubscription","trades","useWalletPnlSubscription","pnls","useWalletPortfoliosSubscription","portfolios","useWalletPortfolioPnlsSubscription","portfolioPnls","useWalletTradeActivitiesSubscription","useNewTokensSubscription","tokens","useTrendingTokensSubscription","useMigratedTokensSubscription","useFinalStretchTokensSubscription","useStockTokensSubscription","DexClientProvider","children","value","useMemo","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["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 { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Portfolio } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosByTokensQueryParams {\n chain: Chain;\n address: string;\n tokenAddresses: Array<string>;\n}\n\nexport function walletPortfoliosByTokensQueryKey(\n params: UseWalletPortfoliosByTokensQueryParams,\n): string[] {\n return [\n \"walletPortfoliosByTokens\",\n params.chain,\n params.address,\n ...params.tokenAddresses.slice().sort(),\n ];\n}\n\nexport async function fetchWalletPortfoliosByTokens(\n client: API.IClient,\n { chain, address, tokenAddresses }: UseWalletPortfoliosByTokensQueryParams,\n) {\n return await client.getWalletPortfoliosByTokens(\n chain,\n address,\n tokenAddresses,\n );\n}\n\nexport function useWalletPortfoliosByTokensQuery(\n params: UseWalletPortfoliosByTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Portfolio>, Error, Array<Portfolio>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfoliosByTokensQueryKey(params),\n queryFn: async () => fetchWalletPortfoliosByTokens(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, PortfolioPnl } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsByTokensQueryParams {\n chain: Chain;\n address: string;\n tokenAddresses: Array<string>;\n}\n\nexport function walletPortfolioPnlsByTokensQueryKey(\n params: UseWalletPortfolioPnlsByTokensQueryParams,\n): string[] {\n return [\n \"walletPortfolioPnlsByTokens\",\n params.chain,\n params.address,\n ...params.tokenAddresses.slice().sort(),\n ];\n}\n\nexport async function fetchWalletPortfolioPnlsByTokens(\n client: API.IClient,\n { chain, address, tokenAddresses }: UseWalletPortfolioPnlsByTokensQueryParams,\n) {\n return await client.getWalletPortfolioPnlsByTokens(\n chain,\n address,\n tokenAddresses,\n );\n}\n\nexport function useWalletPortfolioPnlsByTokensQuery(\n params: UseWalletPortfolioPnlsByTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<PortfolioPnl>, Error, Array<PortfolioPnl>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfolioPnlsByTokensQueryKey(params),\n queryFn: async () => fetchWalletPortfolioPnlsByTokens(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 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 { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenSubscription(\n params: UseTokenSubscriptionParams,\n callback: (data: 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.subscribeToken(\n params.chain,\n params.address,\n (data) => callbackRef.current(data),\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, 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 UseTrendingTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useTrendingTokensSubscription(\n params: UseTrendingTokensSubscriptionParams,\n callback: (data: 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.subscribeTrendingTokens(\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 UseMigratedTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useMigratedTokensSubscription(\n params: UseMigratedTokensSubscriptionParams,\n callback: (data: 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.subscribeMigratedTokens(\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 UseFinalStretchTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useFinalStretchTokensSubscription(\n params: UseFinalStretchTokensSubscriptionParams,\n callback: (data: 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.subscribeFinalStretchTokens(\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 UseStockTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useStockTokensSubscription(\n params: UseStockTokensSubscriptionParams,\n callback: (data: 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.subscribeStockTokens(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { PropsWithChildren, useMemo } 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 const value = useMemo(\n () => ({ client, subscribeClient }),\n [client, subscribeClient],\n );\n\n return (\n <DexClientContext.Provider value={value}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/DexClientContext.ts","../src/hooks/useDexClient.ts","../src/hooks/queryKeyUtils.ts","../src/hooks/createQueryHook.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/useTokenTradesQuery.ts","../src/hooks/useTrendingTokensQuery.ts","../src/hooks/useTxSuccessQuery.ts","../src/hooks/useWalletPnlQuery.ts","../src/hooks/useWalletPortfolioPnlsQuery.ts","../src/hooks/createInfiniteQueryHook.ts","../src/hooks/useWalletPortfolioPnlsInfiniteQuery.ts","../src/hooks/useWalletPortfoliosQuery.ts","../src/hooks/useWalletPortfoliosByTokensQuery.ts","../src/hooks/useWalletPortfoliosInfiniteQuery.ts","../src/hooks/useWalletPortfolioPnlsByTokensQuery.ts","../src/hooks/useWalletTradesQuery.ts","../src/hooks/useTokenActivitiesQuery.ts","../src/hooks/useWalletActivitiesQuery.ts","../src/hooks/useSubscriptionEffect.ts","../src/hooks/useTokenSubscription.ts","../src/hooks/useTokenCandlesSubscription.ts","../src/hooks/useTokenTradesSubscription.ts","../src/hooks/useWalletPnlSubscription.ts","../src/hooks/useWalletPortfoliosSubscription.ts","../src/hooks/useWalletPortfolioPnlsSubscription.ts","../src/hooks/useWalletTradesSubscription.ts","../src/hooks/useTokenActivitiesSubscription.ts","../src/hooks/useWalletActivitiesSubscription.ts","../src/hooks/useNewTokensSubscription.ts","../src/hooks/useTrendingTokensSubscription.ts","../src/hooks/useMigratedTokensSubscription.ts","../src/hooks/useFinalStretchTokensSubscription.ts","../src/hooks/useStockTokensSubscription.ts","../src/DexClientProvider.tsx"],"names":["DEFAULT_QUERY_KEY_PREFIX","DexClientContext","createContext","useDexClient","context","useContext","toKeySegment","value","toSortedKeySegment","createQueryHook","config","buildQueryKey","params","prefix","fetchFn","client","useCreatedQuery","options","queryKeyPrefix","useQuery","finalStretchTokensQueryKey","fetchFinalStretchTokens","useFinalStretchTokensQuery","p","chain","migratedTokensQueryKey","fetchMigratedTokens","useMigratedTokensQuery","newTokensQueryKey","fetchNewTokens","useNewTokensQuery","presignedUploadUrlQueryKey","fetchPresignedUploadUrl","usePresignedUploadUrlQuery","searchTokensQueryKey","fetchSearchTokens","useSearchTokensQuery","sendTx","useSendTxMutation","useMutation","stockTokensQueryKey","fetchStockTokens","useStockTokensQuery","swapRouteQueryKey","fetchSwapRoute","useSwapRouteQuery","tokenCandlesQueryKey","fetchTokenCandles","useTokenCandlesQuery","address","resolution","tokenHoldersQueryKey","fetchTokenHolders","useTokenHoldersQuery","tokenMarketDataQueryKey","fetchTokenMarketData","useTokenMarketDataQuery","tokenQueryKey","fetchToken","useTokenQuery","tokenSecurityQueryKey","fetchTokenSecurity","useTokenSecurityQuery","tokensQueryKey","fetchTokens","useTokensQuery","tokenStatsQueryKey","fetchTokenStats","useTokenStatsQuery","tokenTradesQueryKey","fetchTokenTrades","useTokenTradesQuery","trendingTokensQueryKey","fetchTrendingTokens","useTrendingTokensQuery","txSuccessQueryKey","fetchTxSuccess","useTxSuccessQuery","txHash","timeout","walletPnlQueryKey","fetchWalletPnl","useWalletPnlQuery","walletPortfolioPnlsQueryKey","fetchWalletPortfolioPnls","useWalletPortfolioPnlsQuery","cursor","limit","createInfiniteQueryHook","useCreatedInfiniteQuery","useInfiniteQuery","pageParam","lastPage","walletPortfolioPnlsInfiniteQueryKey","useWalletPortfolioPnlsInfiniteQuery","walletPortfoliosQueryKey","fetchWalletPortfolios","useWalletPortfoliosQuery","walletPortfoliosByTokensQueryKey","fetchWalletPortfoliosByTokens","useWalletPortfoliosByTokensQuery","tokenAddresses","walletPortfoliosInfiniteQueryKey","useWalletPortfoliosInfiniteQuery","walletPortfolioPnlsByTokensQueryKey","fetchWalletPortfolioPnlsByTokens","useWalletPortfolioPnlsByTokensQuery","walletTradesQueryKey","fetchWalletTrades","useWalletTradesQuery","tokenActivitiesQueryKey","fetchTokenActivities","useTokenActivitiesQuery","walletActivitiesQueryKey","fetchWalletActivities","useWalletActivitiesQuery","useSubscriptionEffect","subscribe","callback","deps","callbackRef","useRef","onErrorRef","useEffect","subscription","data","err","useTokenSubscription","subscribeClient","cb","useTokenCandlesSubscription","useTokenTradesSubscription","useWalletPnlSubscription","useWalletPortfoliosSubscription","useWalletPortfolioPnlsSubscription","useWalletTradesSubscription","useTokenActivitiesSubscription","useWalletActivitiesSubscription","useNewTokensSubscription","useTrendingTokensSubscription","useMigratedTokensSubscription","useFinalStretchTokensSubscription","useStockTokensSubscription","DexClientProvider","children","useMemo","jsx"],"mappings":"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","file":"index.mjs","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/react\"] = \"0.1.4\";\n}\n\nexport default \"0.1.4\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\n/**\n * Default prefix prepended to every TanStack Query key produced by hooks in\n * this package. Can be overridden via\n * `<DexClientProvider queryKeyPrefix=\"...\">`.\n */\nexport const DEFAULT_QUERY_KEY_PREFIX = \"liberfi\";\n\n/**\n * Shape of the context value provided by `DexClientProvider` and consumed by\n * `useDexClient`.\n */\nexport interface DexClientContextValue {\n /** REST / HTTP client implementing `API.IClient`. */\n client: API.IClient;\n /** WebSocket subscription client implementing `API.ISubscribeClient`. */\n subscribeClient: API.ISubscribeClient;\n /** Prefix used in all query keys produced by hooks. */\n queryKeyPrefix: string;\n}\n\n/**\n * Internal React context. Use `DexClientProvider` to supply the value and\n * `useDexClient()` to consume it.\n */\nexport const DexClientContext = createContext<DexClientContextValue | null>(\n null,\n);\n","import { useContext } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"../DexClientContext\";\n\n/**\n * Returns the `DexClientContextValue` provided by `DexClientProvider`.\n *\n * @throws If called outside a `DexClientProvider`.\n */\nexport function useDexClient(): DexClientContextValue {\n const context = useContext(DexClientContext);\n if (context === null) {\n throw new Error(\"useDexClient must be used within a DexClientProvider\");\n }\n return context;\n}\n","/**\n * Serialises a primitive value (or Date) into a stable string for use in query\n * keys. `undefined` and `null` map to `\"\"`.\n */\nexport function toKeySegment(\n value: string | number | boolean | Date | undefined | null,\n): string {\n if (value === undefined || value === null) return \"\";\n if (value instanceof Date) return value.toISOString();\n return String(value);\n}\n\n/**\n * Serialises an array value into a stable, sorted JSON string for use in\n * query keys.\n */\nexport function toSortedKeySegment(\n value: unknown[] | undefined | null,\n): string {\n if (!value || value.length === 0) return \"[]\";\n return JSON.stringify([...value].sort());\n}\n","import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { DEFAULT_QUERY_KEY_PREFIX } from \"../DexClientContext\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface QueryHookConfig<TParams, TData> {\n /** Key name segment (e.g. `\"token\"`, `\"newTokens\"`). */\n name: string;\n /** Builds the variable segments of the query key from `params`. */\n queryKey: (params: TParams) => string[];\n /** Fetches data using the API client. */\n fetch: (client: API.IClient, params: TParams) => Promise<TData>;\n /** Default options merged *below* caller-supplied options. */\n defaultOptions?: Partial<\n Omit<UseQueryOptions<TData, Error, TData, string[]>, \"queryKey\" | \"queryFn\">\n >;\n}\n\nexport interface QueryHookReturn<TParams, TData> {\n /**\n * Builds the full query key including the namespace prefix.\n *\n * Useful for manual cache operations such as `queryClient.invalidateQueries`\n * or `queryClient.prefetchQuery`.\n *\n * @param params - Hook parameters.\n * @param prefix - Override the default prefix (`DEFAULT_QUERY_KEY_PREFIX`).\n */\n queryKey: (params: TParams, prefix?: string) => string[];\n /** Fetches data using the API client (for use outside React). */\n fetch: (client: API.IClient, params: TParams) => Promise<TData>;\n /** React hook that fetches and caches data via TanStack Query. */\n useQuery: (\n params: TParams,\n options?: Omit<\n UseQueryOptions<TData, Error, TData, string[]>,\n \"queryKey\" | \"queryFn\"\n >,\n ) => UseQueryResult<TData, Error>;\n}\n\n/**\n * Creates a `useQuery`-based hook, its `queryKey` builder and a standalone\n * `fetch` function from a single declarative config object.\n */\nexport function createQueryHook<TParams, TData>(\n config: QueryHookConfig<TParams, TData>,\n): QueryHookReturn<TParams, TData> {\n function buildQueryKey(\n params: TParams,\n prefix: string = DEFAULT_QUERY_KEY_PREFIX,\n ): string[] {\n return [prefix, config.name, ...config.queryKey(params)];\n }\n\n function fetchFn(client: API.IClient, params: TParams): Promise<TData> {\n return config.fetch(client, params);\n }\n\n function useCreatedQuery(\n params: TParams,\n options: Omit<\n UseQueryOptions<TData, Error, TData, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n ): UseQueryResult<TData, Error> {\n const { client, queryKeyPrefix } = useDexClient();\n return useQuery({\n queryKey: buildQueryKey(params, queryKeyPrefix),\n queryFn: () => config.fetch(client, params),\n ...config.defaultOptions,\n ...options,\n });\n }\n\n return { queryKey: buildQueryKey, fetch: fetchFn, useQuery: useCreatedQuery };\n}\n","import { API, Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useFinalStretchTokensQuery}. */\nexport interface UseFinalStretchTokensQueryParams\n extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nconst {\n queryKey: finalStretchTokensQueryKey,\n fetch: fetchFinalStretchTokens,\n useQuery: useFinalStretchTokensQuery,\n} = createQueryHook<UseFinalStretchTokensQueryParams, Array<Token>>({\n name: \"finalStretchTokens\",\n queryKey: (p) => [\n p.chain,\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n toSortedKeySegment(p.keywords),\n toSortedKeySegment(p.excludeKeywords),\n toSortedKeySegment(p.filters),\n ],\n fetch: (client, { chain, ...options }) =>\n client.getFinalStretchTokens(chain, options),\n});\n\nexport {\n finalStretchTokensQueryKey,\n fetchFinalStretchTokens,\n useFinalStretchTokensQuery,\n};\n","import { API, Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useMigratedTokensQuery}. */\nexport interface UseMigratedTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nconst {\n queryKey: migratedTokensQueryKey,\n fetch: fetchMigratedTokens,\n useQuery: useMigratedTokensQuery,\n} = createQueryHook<UseMigratedTokensQueryParams, Array<Token>>({\n name: \"migratedTokens\",\n queryKey: (p) => [\n p.chain,\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n toSortedKeySegment(p.keywords),\n toSortedKeySegment(p.excludeKeywords),\n toSortedKeySegment(p.filters),\n ],\n fetch: (client, { chain, ...options }) =>\n client.getMigratedTokens(chain, options),\n});\n\nexport { migratedTokensQueryKey, fetchMigratedTokens, useMigratedTokensQuery };\n","import { API, Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useNewTokensQuery}. */\nexport interface UseNewTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nconst {\n queryKey: newTokensQueryKey,\n fetch: fetchNewTokens,\n useQuery: useNewTokensQuery,\n} = createQueryHook<UseNewTokensQueryParams, Array<Token>>({\n name: \"newTokens\",\n queryKey: (p) => [\n p.chain,\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n toSortedKeySegment(p.keywords),\n toSortedKeySegment(p.excludeKeywords),\n toSortedKeySegment(p.filters),\n ],\n fetch: (client, { chain, ...options }) => client.getNewTokens(chain, options),\n});\n\nexport { newTokensQueryKey, fetchNewTokens, useNewTokensQuery };\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { DEFAULT_QUERY_KEY_PREFIX } from \"../DexClientContext\";\nimport { useDexClient } from \"./useDexClient\";\n\n/**\n * Builds the query key for `usePresignedUploadUrlQuery`.\n *\n * @param prefix - Override the default query key prefix.\n */\nexport function presignedUploadUrlQueryKey(\n prefix: string = DEFAULT_QUERY_KEY_PREFIX,\n): string[] {\n return [prefix, \"presignedUploadUrl\"];\n}\n\n/** Fetches a presigned upload URL (for use outside React). */\nexport async function fetchPresignedUploadUrl(client: API.IClient) {\n return await client.getPresignedUploadUrl();\n}\n\n/** Fetches a one-time presigned upload URL. `staleTime` defaults to `0`. */\nexport function usePresignedUploadUrlQuery(\n options: Omit<\n UseQueryOptions<string, Error, string, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client, queryKeyPrefix } = useDexClient();\n return useQuery({\n queryKey: presignedUploadUrlQueryKey(queryKeyPrefix),\n queryFn: async () => fetchPresignedUploadUrl(client),\n staleTime: 0,\n ...options,\n });\n}\n","import { API } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\nexport type UseSearchTokensQueryParams = API.SearchTokensOptions;\n\nconst {\n queryKey: searchTokensQueryKey,\n fetch: fetchSearchTokens,\n useQuery: useSearchTokensQuery,\n} = createQueryHook<UseSearchTokensQueryParams, API.SearchTokenCursorList>({\n name: \"searchTokens\",\n queryKey: (p) => [\n toKeySegment(p.cursor),\n toKeySegment(p.limit),\n toKeySegment(p.direction),\n toSortedKeySegment(p.chains),\n toKeySegment(p.keyword),\n toSortedKeySegment(p.filters),\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n ],\n fetch: (client, params) => client.searchTokens(params),\n});\n\nexport { searchTokensQueryKey, fetchSearchTokens, useSearchTokensQuery };\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\n/** Sends a transaction via the API client (for use outside React). */\nexport async function sendTx(\n client: API.IClient,\n params: UseSendTxMutationParams,\n) {\n return await client.sendTx(params);\n}\n\n/** Mutation hook that sends a transaction. */\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 { API, Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useStockTokensQuery}. */\nexport interface UseStockTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nconst {\n queryKey: stockTokensQueryKey,\n fetch: fetchStockTokens,\n useQuery: useStockTokensQuery,\n} = createQueryHook<UseStockTokensQueryParams, Array<Token>>({\n name: \"stockTokens\",\n queryKey: (p) => [\n p.chain,\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n toSortedKeySegment(p.keywords),\n toSortedKeySegment(p.excludeKeywords),\n toSortedKeySegment(p.filters),\n ],\n fetch: (client, { chain, ...options }) =>\n client.getStockTokens(chain, options),\n});\n\nexport { stockTokensQueryKey, fetchStockTokens, useStockTokensQuery };\n","import { API } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\nexport type UseSwapRouteQueryParams = API.SwapParams;\n\nconst {\n queryKey: swapRouteQueryKey,\n fetch: fetchSwapRoute,\n useQuery: useSwapRouteQuery,\n} = createQueryHook<UseSwapRouteQueryParams, API.SwapRoute>({\n name: \"swapRoute\",\n queryKey: (p) => [\n p.chain,\n p.userAddress,\n p.input,\n p.output,\n p.mode,\n p.amount,\n toKeySegment(p.slippage),\n toKeySegment(p.priorityFee),\n toKeySegment(p.tipFee),\n toKeySegment(p.isAntiMev),\n ],\n fetch: (client, params) => client.swapRoute(params),\n});\n\nexport { swapRouteQueryKey, fetchSwapRoute, useSwapRouteQuery };\n","import { API, Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTokenCandlesQuery}. */\nexport interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nconst {\n queryKey: tokenCandlesQueryKey,\n fetch: fetchTokenCandles,\n useQuery: useTokenCandlesQuery,\n} = createQueryHook<UseTokenCandlesQueryParams, Array<TokenCandle>>({\n name: \"tokenCandles\",\n queryKey: (p) => [\n p.chain,\n p.address,\n p.resolution,\n toKeySegment(p.after),\n toKeySegment(p.before),\n toKeySegment(p.limit),\n ],\n fetch: (client, { chain, address, resolution, ...options }) =>\n client.getTokenCandles(chain, address, resolution, options),\n});\n\nexport { tokenCandlesQueryKey, fetchTokenCandles, useTokenCandlesQuery };\n","import { API, Chain, TokenHolder } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTokenHoldersQuery}. */\nexport interface UseTokenHoldersQueryParams extends API.CursorListOptions {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenHoldersQueryKey,\n fetch: fetchTokenHolders,\n useQuery: useTokenHoldersQuery,\n} = createQueryHook<UseTokenHoldersQueryParams, API.CursorList<TokenHolder>>({\n name: \"tokenHolders\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.cursor),\n toKeySegment(p.limit),\n toKeySegment(p.direction),\n ],\n fetch: (client, { chain, address, ...options }) =>\n client.getTokenHolders(chain, address, options),\n});\n\nexport { tokenHoldersQueryKey, fetchTokenHolders, useTokenHoldersQuery };\n","import { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useTokenMarketDataQuery}. */\nexport interface UseTokenMarketDataQueryParams {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenMarketDataQueryKey,\n fetch: fetchTokenMarketData,\n useQuery: useTokenMarketDataQuery,\n} = createQueryHook<UseTokenMarketDataQueryParams, TokenMarketData>({\n name: \"tokenMarketData\",\n queryKey: (p) => [p.chain, p.address],\n fetch: (client, p) => client.getTokenMarketData(p.chain, p.address),\n});\n\nexport {\n tokenMarketDataQueryKey,\n fetchTokenMarketData,\n useTokenMarketDataQuery,\n};\n","import { Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useTokenQuery}. */\nexport interface UseTokenQueryParams {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenQueryKey,\n fetch: fetchToken,\n useQuery: useTokenQuery,\n} = createQueryHook<UseTokenQueryParams, Token>({\n name: \"token\",\n queryKey: (p) => [p.chain, p.address],\n fetch: (client, p) => client.getToken(p.chain, p.address),\n});\n\nexport { tokenQueryKey, fetchToken, useTokenQuery };\n","import { Chain, TokenSecurity } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useTokenSecurityQuery}. */\nexport interface UseTokenSecurityQueryParams {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenSecurityQueryKey,\n fetch: fetchTokenSecurity,\n useQuery: useTokenSecurityQuery,\n} = createQueryHook<UseTokenSecurityQueryParams, TokenSecurity>({\n name: \"tokenSecurity\",\n queryKey: (p) => [p.chain, p.address],\n fetch: (client, p) => client.getTokenSecurity(p.chain, p.address),\n});\n\nexport { tokenSecurityQueryKey, fetchTokenSecurity, useTokenSecurityQuery };\n","import { Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useTokensQuery}. */\nexport interface UseTokensQueryParams {\n chain: Chain;\n addresses: Array<string>;\n}\n\nconst {\n queryKey: tokensQueryKey,\n fetch: fetchTokens,\n useQuery: useTokensQuery,\n} = createQueryHook<UseTokensQueryParams, Array<Token>>({\n name: \"tokens\",\n queryKey: (p) => [p.chain, [...p.addresses].sort().join(\",\")],\n fetch: (client, p) => client.getTokens(p.chain, p.addresses),\n});\n\nexport { tokensQueryKey, fetchTokens, useTokensQuery };\n","import { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useTokenStatsQuery}. */\nexport interface UseTokenStatsQueryParams {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenStatsQueryKey,\n fetch: fetchTokenStats,\n useQuery: useTokenStatsQuery,\n} = createQueryHook<UseTokenStatsQueryParams, TokenStats>({\n name: \"tokenStats\",\n queryKey: (p) => [p.chain, p.address],\n fetch: (client, p) => client.getTokenStats(p.chain, p.address),\n});\n\nexport { tokenStatsQueryKey, fetchTokenStats, useTokenStatsQuery };\n","import { API, Chain, Trade } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTokenTradesQuery}. */\nexport interface UseTokenTradesQueryParams extends API.GetTradesOptions {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenTradesQueryKey,\n fetch: fetchTokenTrades,\n useQuery: useTokenTradesQuery,\n} = createQueryHook<UseTokenTradesQueryParams, API.CursorList<Trade>>({\n name: \"tokenTrades\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.before),\n toKeySegment(p.after),\n toKeySegment(p.beforeBlockHeight),\n toKeySegment(p.afterBlockHeight),\n toKeySegment(p.type),\n toKeySegment(p.poolAddress),\n ],\n fetch: (client, { chain, address, ...options }) =>\n client.getTokenTrades(chain, address, options),\n});\n\nexport { tokenTradesQueryKey, fetchTokenTrades, useTokenTradesQuery };\n","import { API, Chain, Token } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment, toSortedKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTrendingTokensQuery}. */\nexport interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\";\n}\n\nconst {\n queryKey: trendingTokensQueryKey,\n fetch: fetchTrendingTokens,\n useQuery: useTrendingTokensQuery,\n} = createQueryHook<UseTrendingTokensQueryParams, Array<Token>>({\n name: \"trendingTokens\",\n queryKey: (p) => [\n p.chain,\n p.resolution,\n toKeySegment(p.sortBy),\n toKeySegment(p.sortDirection),\n toSortedKeySegment(p.keywords),\n toSortedKeySegment(p.excludeKeywords),\n toSortedKeySegment(p.filters),\n ],\n fetch: (client, { chain, resolution, ...options }) =>\n client.getTrendingTokens(chain, resolution, options),\n});\n\nexport { trendingTokensQueryKey, fetchTrendingTokens, useTrendingTokensQuery };\n","import { Chain } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTxSuccessQuery}. */\nexport interface UseTxSuccessQueryParams {\n chain: Chain;\n txHash: string;\n timeout?: number;\n}\n\nconst {\n queryKey: txSuccessQueryKey,\n fetch: fetchTxSuccess,\n useQuery: useTxSuccessQuery,\n} = createQueryHook<UseTxSuccessQueryParams, boolean>({\n name: \"txSuccess\",\n queryKey: (p) => [p.chain, p.txHash, toKeySegment(p.timeout)],\n fetch: (client, { chain, txHash, timeout }) =>\n client.checkTxSuccess(chain, txHash, timeout),\n});\n\nexport { txSuccessQueryKey, fetchTxSuccess, useTxSuccessQuery };\n","import { Chain, WalletPnl } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletPnlQuery}. */\nexport interface UseWalletPnlQueryParams {\n chain: Chain;\n address: string;\n resolution?: string;\n}\n\nconst {\n queryKey: walletPnlQueryKey,\n fetch: fetchWalletPnl,\n useQuery: useWalletPnlQuery,\n} = createQueryHook<UseWalletPnlQueryParams, WalletPnl>({\n name: \"walletPnl\",\n queryKey: (p) => [p.chain, p.address, toKeySegment(p.resolution ?? \"all\")],\n fetch: (client, { chain, address, resolution }) =>\n client.getWalletPnl(chain, address, resolution),\n});\n\nexport { walletPnlQueryKey, fetchWalletPnl, useWalletPnlQuery };\n","import { Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletPortfolioPnlsQuery}. */\nexport interface UseWalletPortfolioPnlsQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nconst {\n queryKey: walletPortfolioPnlsQueryKey,\n fetch: fetchWalletPortfolioPnls,\n useQuery: useWalletPortfolioPnlsQuery,\n} = createQueryHook<UseWalletPortfolioPnlsQueryParams, WalletPortfolioPnls>({\n name: \"walletPortfolioPnls\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.cursor),\n toKeySegment(p.limit),\n ],\n fetch: (client, { chain, address, cursor, limit }) =>\n client.getWalletPortfolioPnls(chain, address, { cursor, limit }),\n});\n\nexport {\n walletPortfolioPnlsQueryKey,\n fetchWalletPortfolioPnls,\n useWalletPortfolioPnlsQuery,\n};\n","import {\n useInfiniteQuery,\n type InfiniteData,\n type UseInfiniteQueryOptions,\n type UseInfiniteQueryResult,\n} from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { DEFAULT_QUERY_KEY_PREFIX } from \"../DexClientContext\";\nimport { useDexClient } from \"./useDexClient\";\n\ninterface CursorPaginatedResult {\n hasNext?: boolean;\n endCursor?: string;\n}\n\nexport interface InfiniteQueryHookConfig<\n TParams,\n TData extends CursorPaginatedResult,\n> {\n /** Key name segment (e.g. `\"walletPortfolios\"`). */\n name: string;\n /** Builds the variable segments of the query key from `params`. */\n queryKey: (params: TParams) => string[];\n /** Fetches a single page of data. */\n fetch: (\n client: API.IClient,\n params: TParams,\n cursor: string | undefined,\n ) => Promise<TData>;\n}\n\nexport interface InfiniteQueryHookReturn<\n TParams,\n TData extends CursorPaginatedResult,\n> {\n /**\n * Builds the full query key including the namespace prefix and an\n * `\"infinite\"` tag to distinguish it from the non-infinite variant.\n */\n queryKey: (params: TParams, prefix?: string) => string[];\n /** React hook that fetches cursor-paginated data via TanStack Query. */\n useInfiniteQuery: (\n params: TParams,\n options?: Omit<\n UseInfiniteQueryOptions<\n TData,\n Error,\n InfiniteData<TData>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n >,\n ) => UseInfiniteQueryResult<InfiniteData<TData>, Error>;\n}\n\n/**\n * Creates a `useInfiniteQuery`-based hook and its `queryKey` builder for\n * cursor-paginated endpoints.\n */\nexport function createInfiniteQueryHook<\n TParams,\n TData extends CursorPaginatedResult,\n>(\n config: InfiniteQueryHookConfig<TParams, TData>,\n): InfiniteQueryHookReturn<TParams, TData> {\n function buildQueryKey(\n params: TParams,\n prefix: string = DEFAULT_QUERY_KEY_PREFIX,\n ): string[] {\n return [prefix, config.name, \"infinite\", ...config.queryKey(params)];\n }\n\n function useCreatedInfiniteQuery(\n params: TParams,\n options: Omit<\n UseInfiniteQueryOptions<\n TData,\n Error,\n InfiniteData<TData>,\n string[],\n string | undefined\n >,\n \"queryKey\" | \"queryFn\" | \"initialPageParam\" | \"getNextPageParam\"\n > = {},\n ) {\n const { client, queryKeyPrefix } = useDexClient();\n return useInfiniteQuery({\n queryKey: buildQueryKey(params, queryKeyPrefix),\n queryFn: ({ pageParam }) => config.fetch(client, params, pageParam),\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage) =>\n lastPage.hasNext ? lastPage.endCursor : undefined,\n ...options,\n });\n }\n\n return {\n queryKey: buildQueryKey,\n useInfiniteQuery: useCreatedInfiniteQuery,\n };\n}\n","import { Chain, WalletPortfolioPnls } from \"@liberfi.io/types\";\nimport { createInfiniteQueryHook } from \"./createInfiniteQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletPortfolioPnlsInfiniteQuery}. */\nexport interface UseWalletPortfolioPnlsInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nconst {\n queryKey: walletPortfolioPnlsInfiniteQueryKey,\n useInfiniteQuery: useWalletPortfolioPnlsInfiniteQuery,\n} = createInfiniteQueryHook<\n UseWalletPortfolioPnlsInfiniteQueryParams,\n WalletPortfolioPnls\n>({\n name: \"walletPortfolioPnls\",\n queryKey: (p) => [p.chain, p.address, toKeySegment(p.limit)],\n fetch: (client, params, cursor) =>\n client.getWalletPortfolioPnls(params.chain, params.address, {\n cursor,\n limit: params.limit ?? 100,\n }),\n});\n\nexport {\n walletPortfolioPnlsInfiniteQueryKey,\n useWalletPortfolioPnlsInfiniteQuery,\n};\n","import { Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletPortfoliosQuery}. */\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nconst {\n queryKey: walletPortfoliosQueryKey,\n fetch: fetchWalletPortfolios,\n useQuery: useWalletPortfoliosQuery,\n} = createQueryHook<UseWalletPortfoliosQueryParams, WalletPortfolios>({\n name: \"walletPortfolios\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.cursor),\n toKeySegment(p.limit),\n ],\n fetch: (client, { chain, address, cursor, limit }) =>\n client.getWalletPortfolios(chain, address, { cursor, limit }),\n});\n\nexport {\n walletPortfoliosQueryKey,\n fetchWalletPortfolios,\n useWalletPortfoliosQuery,\n};\n","import { Chain, Portfolio } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useWalletPortfoliosByTokensQuery}. */\nexport interface UseWalletPortfoliosByTokensQueryParams {\n chain: Chain;\n address: string;\n tokenAddresses: Array<string>;\n}\n\nconst {\n queryKey: walletPortfoliosByTokensQueryKey,\n fetch: fetchWalletPortfoliosByTokens,\n useQuery: useWalletPortfoliosByTokensQuery,\n} = createQueryHook<UseWalletPortfoliosByTokensQueryParams, Array<Portfolio>>({\n name: \"walletPortfoliosByTokens\",\n queryKey: (p) => [p.chain, p.address, ...[...p.tokenAddresses].sort()],\n fetch: (client, { chain, address, tokenAddresses }) =>\n client.getWalletPortfoliosByTokens(chain, address, tokenAddresses),\n});\n\nexport {\n walletPortfoliosByTokensQueryKey,\n fetchWalletPortfoliosByTokens,\n useWalletPortfoliosByTokensQuery,\n};\n","import { Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { createInfiniteQueryHook } from \"./createInfiniteQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletPortfoliosInfiniteQuery}. */\nexport interface UseWalletPortfoliosInfiniteQueryParams {\n chain: Chain;\n address: string;\n limit?: number;\n}\n\nconst {\n queryKey: walletPortfoliosInfiniteQueryKey,\n useInfiniteQuery: useWalletPortfoliosInfiniteQuery,\n} = createInfiniteQueryHook<\n UseWalletPortfoliosInfiniteQueryParams,\n WalletPortfolios\n>({\n name: \"walletPortfolios\",\n queryKey: (p) => [p.chain, p.address, toKeySegment(p.limit)],\n fetch: (client, params, cursor) =>\n client.getWalletPortfolios(params.chain, params.address, {\n cursor,\n limit: params.limit ?? 100,\n }),\n});\n\nexport { walletPortfoliosInfiniteQueryKey, useWalletPortfoliosInfiniteQuery };\n","import { Chain, PortfolioPnl } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\n\n/** Parameters for {@link useWalletPortfolioPnlsByTokensQuery}. */\nexport interface UseWalletPortfolioPnlsByTokensQueryParams {\n chain: Chain;\n address: string;\n tokenAddresses: Array<string>;\n}\n\nconst {\n queryKey: walletPortfolioPnlsByTokensQueryKey,\n fetch: fetchWalletPortfolioPnlsByTokens,\n useQuery: useWalletPortfolioPnlsByTokensQuery,\n} = createQueryHook<\n UseWalletPortfolioPnlsByTokensQueryParams,\n Array<PortfolioPnl>\n>({\n name: \"walletPortfolioPnlsByTokens\",\n queryKey: (p) => [p.chain, p.address, ...[...p.tokenAddresses].sort()],\n fetch: (client, { chain, address, tokenAddresses }) =>\n client.getWalletPortfolioPnlsByTokens(chain, address, tokenAddresses),\n});\n\nexport {\n walletPortfolioPnlsByTokensQueryKey,\n fetchWalletPortfolioPnlsByTokens,\n useWalletPortfolioPnlsByTokensQuery,\n};\n","import { API, Chain, Trade } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletTradesQuery}. */\nexport interface UseWalletTradesQueryParams extends API.GetTradesOptions {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: walletTradesQueryKey,\n fetch: fetchWalletTrades,\n useQuery: useWalletTradesQuery,\n} = createQueryHook<UseWalletTradesQueryParams, API.CursorList<Trade>>({\n name: \"walletTrades\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.before),\n toKeySegment(p.after),\n toKeySegment(p.beforeBlockHeight),\n toKeySegment(p.afterBlockHeight),\n toKeySegment(p.type),\n toKeySegment(p.poolAddress),\n ],\n fetch: (client, { chain, address, ...options }) =>\n client.getWalletTrades(chain, address, options),\n});\n\nexport { walletTradesQueryKey, fetchWalletTrades, useWalletTradesQuery };\n","import { API, Activity, Chain } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useTokenActivitiesQuery}. */\nexport interface UseTokenActivitiesQueryParams\n extends API.GetActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: tokenActivitiesQueryKey,\n fetch: fetchTokenActivities,\n useQuery: useTokenActivitiesQuery,\n} = createQueryHook<UseTokenActivitiesQueryParams, API.CursorList<Activity>>({\n name: \"tokenActivities\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.before),\n toKeySegment(p.after),\n toKeySegment(p.beforeBlockHeight),\n toKeySegment(p.afterBlockHeight),\n toKeySegment(p.type),\n toKeySegment(p.poolAddress),\n ],\n fetch: (client, { chain, address, ...options }) =>\n client.getTokenActivities(chain, address, options),\n});\n\nexport {\n tokenActivitiesQueryKey,\n fetchTokenActivities,\n useTokenActivitiesQuery,\n};\n","import { API, Activity, Chain } from \"@liberfi.io/types\";\nimport { createQueryHook } from \"./createQueryHook\";\nimport { toKeySegment } from \"./queryKeyUtils\";\n\n/** Parameters for {@link useWalletActivitiesQuery}. */\nexport interface UseWalletActivitiesQueryParams\n extends API.GetActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nconst {\n queryKey: walletActivitiesQueryKey,\n fetch: fetchWalletActivities,\n useQuery: useWalletActivitiesQuery,\n} = createQueryHook<UseWalletActivitiesQueryParams, API.CursorList<Activity>>({\n name: \"walletActivities\",\n queryKey: (p) => [\n p.chain,\n p.address,\n toKeySegment(p.before),\n toKeySegment(p.after),\n toKeySegment(p.beforeBlockHeight),\n toKeySegment(p.afterBlockHeight),\n toKeySegment(p.type),\n toKeySegment(p.poolAddress),\n ],\n fetch: (client, { chain, address, ...options }) =>\n client.getWalletActivities(chain, address, options),\n});\n\nexport {\n walletActivitiesQueryKey,\n fetchWalletActivities,\n useWalletActivitiesQuery,\n};\n","import { useEffect, useRef } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface SubscriptionOptions {\n /** Set to `false` to pause the subscription. Defaults to `true`. */\n enabled?: boolean;\n /** Called when the subscription encounters an error. */\n onError?: (error: Error) => void;\n}\n\n/**\n * Manages the lifecycle of a WebSocket subscription: stabilised callback ref,\n * `enabled` guard, subscribe/unsubscribe on dependency changes, and error\n * forwarding via `onError`.\n *\n * @param subscribe - Factory that creates the subscription. Receives a\n * stabilised callback and must return an `ISubscription`.\n * @param callback - Called with each pushed payload. May change between\n * renders without triggering a re-subscription.\n * @param deps - React dependency list that controls re-subscription.\n * @param options - `enabled` toggle and `onError` handler.\n */\nexport function useSubscriptionEffect<TData>(\n subscribe: (callback: (data: TData) => void) => API.ISubscription,\n callback: (data: TData) => void,\n deps: unknown[],\n options?: SubscriptionOptions,\n): void {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n const onErrorRef = useRef(options?.onError);\n onErrorRef.current = options?.onError;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n let subscription: API.ISubscription | undefined;\n try {\n subscription = subscribe((data) => callbackRef.current(data));\n } catch (err) {\n onErrorRef.current?.(err instanceof Error ? err : new Error(String(err)));\n }\n return () => subscription?.unsubscribe();\n }, deps);\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useTokenSubscription}. */\nexport interface UseTokenSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time updates for a single token. */\nexport function useTokenSubscription(\n params: UseTokenSubscriptionParams,\n callback: (data: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeToken(params.chain, params.address, cb),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useTokenCandlesSubscription}. */\nexport interface UseTokenCandlesSubscriptionParams {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\n/** Subscribes to real-time candle updates for a token. */\nexport function useTokenCandlesSubscription(\n params: UseTokenCandlesSubscriptionParams,\n callback: (candles: Array<TokenCandle>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeTokenCandles(\n params.chain,\n params.address,\n params.resolution,\n cb,\n ),\n callback,\n [\n subscribeClient,\n params.chain,\n params.address,\n params.resolution,\n options?.enabled,\n ],\n options,\n );\n}\n","import { Chain, Trade } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useTokenTradesSubscription}. */\nexport interface UseTokenTradesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time trade events for a token. */\nexport function useTokenTradesSubscription(\n params: UseTokenTradesSubscriptionParams,\n callback: (trades: Array<Trade>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeTokenTrades(params.chain, params.address, cb),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useWalletPnlSubscription}. */\nexport interface UseWalletPnlSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time wallet PnL updates. */\nexport function useWalletPnlSubscription(\n params: UseWalletPnlSubscriptionParams,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeWalletPnl(params.chain, params.address, cb),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useWalletPortfoliosSubscription}. */\nexport interface UseWalletPortfoliosSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time wallet portfolio updates. */\nexport function useWalletPortfoliosSubscription(\n params: UseWalletPortfoliosSubscriptionParams,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeWalletPortfolios(\n params.chain,\n params.address,\n cb,\n ),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useWalletPortfolioPnlsSubscription}. */\nexport interface UseWalletPortfolioPnlsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time wallet portfolio PnL updates. */\nexport function useWalletPortfolioPnlsSubscription(\n params: UseWalletPortfolioPnlsSubscriptionParams,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeWalletPortfolioPnls(\n params.chain,\n params.address,\n cb,\n ),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { Chain, Trade } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useWalletTradesSubscription}. */\nexport interface UseWalletTradesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time wallet trade events. */\nexport function useWalletTradesSubscription(\n params: UseWalletTradesSubscriptionParams,\n callback: (trades: Array<Trade>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeWalletTrades(params.chain, params.address, cb),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { Activity, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useTokenActivitiesSubscription}. */\nexport interface UseTokenActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time activity events for a token. */\nexport function useTokenActivitiesSubscription(\n params: UseTokenActivitiesSubscriptionParams,\n callback: (activities: Array<Activity>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeTokenActivities(\n params.chain,\n params.address,\n cb,\n ),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { Activity, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useWalletActivitiesSubscription}. */\nexport interface UseWalletActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\n/** Subscribes to real-time wallet activity events. */\nexport function useWalletActivitiesSubscription(\n params: UseWalletActivitiesSubscriptionParams,\n callback: (activities: Array<Activity>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) =>\n subscribeClient.subscribeWalletActivities(\n params.chain,\n params.address,\n cb,\n ),\n callback,\n [subscribeClient, params.chain, params.address, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useNewTokensSubscription}. */\nexport interface UseNewTokensSubscriptionParams {\n chain: Chain;\n}\n\n/** Subscribes to real-time new token listings. */\nexport function useNewTokensSubscription(\n params: UseNewTokensSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeNewTokens(params.chain, cb),\n callback,\n [subscribeClient, params.chain, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useTrendingTokensSubscription}. */\nexport interface UseTrendingTokensSubscriptionParams {\n chain: Chain;\n}\n\n/** Subscribes to real-time trending token updates. */\nexport function useTrendingTokensSubscription(\n params: UseTrendingTokensSubscriptionParams,\n callback: (data: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeTrendingTokens(params.chain, cb),\n callback,\n [subscribeClient, params.chain, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useMigratedTokensSubscription}. */\nexport interface UseMigratedTokensSubscriptionParams {\n chain: Chain;\n}\n\n/** Subscribes to real-time migrated token updates. */\nexport function useMigratedTokensSubscription(\n params: UseMigratedTokensSubscriptionParams,\n callback: (data: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeMigratedTokens(params.chain, cb),\n callback,\n [subscribeClient, params.chain, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useFinalStretchTokensSubscription}. */\nexport interface UseFinalStretchTokensSubscriptionParams {\n chain: Chain;\n}\n\n/** Subscribes to real-time final-stretch token updates. */\nexport function useFinalStretchTokensSubscription(\n params: UseFinalStretchTokensSubscriptionParams,\n callback: (data: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeFinalStretchTokens(params.chain, cb),\n callback,\n [subscribeClient, params.chain, options?.enabled],\n options,\n );\n}\n","import { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\nimport {\n useSubscriptionEffect,\n type SubscriptionOptions,\n} from \"./useSubscriptionEffect\";\n\n/** Parameters for {@link useStockTokensSubscription}. */\nexport interface UseStockTokensSubscriptionParams {\n chain: Chain;\n}\n\n/** Subscribes to real-time stock token updates. */\nexport function useStockTokensSubscription(\n params: UseStockTokensSubscriptionParams,\n callback: (data: Array<API.TokenSubscribed>) => void,\n options?: SubscriptionOptions,\n) {\n const { subscribeClient } = useDexClient();\n\n useSubscriptionEffect(\n (cb) => subscribeClient.subscribeStockTokens(params.chain, cb),\n callback,\n [subscribeClient, params.chain, options?.enabled],\n options,\n );\n}\n","import { PropsWithChildren, useMemo } from \"react\";\nimport { API } from \"@liberfi.io/types\";\nimport {\n DEFAULT_QUERY_KEY_PREFIX,\n DexClientContext,\n DexClientContextValue,\n} from \"./DexClientContext\";\n\nexport type DexClientProviderProps = PropsWithChildren<{\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n /**\n * Prefix prepended to every TanStack Query key produced by hooks in this\n * package. Useful for avoiding collisions with other libraries.\n *\n * @default \"liberfi\"\n */\n queryKeyPrefix?: string;\n}>;\n\n/**\n * Provides the Dex client instances and configuration to all descendant hooks.\n *\n * Both `client` and `subscribeClient` should be referentially stable (e.g.\n * created with `useMemo` or stored in a `useRef`) to avoid unnecessary\n * re-renders of consumers.\n */\nexport function DexClientProvider({\n client,\n subscribeClient,\n queryKeyPrefix = DEFAULT_QUERY_KEY_PREFIX,\n children,\n}: DexClientProviderProps) {\n const value = useMemo<DexClientContextValue>(\n () => ({ client, subscribeClient, queryKeyPrefix }),\n [client, subscribeClient, queryKeyPrefix],\n );\n\n return (\n <DexClientContext.Provider value={value}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liberfi.io/react",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "React integration layer for Liberfi SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,17 +18,24 @@
18
18
  ],
19
19
  "license": "ISC",
20
20
  "dependencies": {
21
- "@liberfi.io/types": "0.1.25"
21
+ "@liberfi.io/types": "0.1.27"
22
22
  },
23
23
  "devDependencies": {
24
+ "@jest/globals": "^30.0.2",
24
25
  "@tanstack/react-query": "^5.90.2",
26
+ "@testing-library/dom": "^10.4.1",
27
+ "@testing-library/react": "^16.3.0",
28
+ "@types/jest": "^29.5.3",
25
29
  "@types/react": "^19.1.13",
26
30
  "@types/react-dom": "^19.1.9",
31
+ "jest": "^29.6.1",
32
+ "jest-environment-jsdom": "^29.7.0",
27
33
  "react": "^19.1.1",
28
34
  "react-dom": "^19.1.1",
35
+ "ts-jest": "^29.3.4",
29
36
  "tsup": "^8.5.0",
30
37
  "typescript": "^5.9.2",
31
- "tsconfig": "0.1.13"
38
+ "tsconfig": "0.1.15"
32
39
  },
33
40
  "peerDependencies": {
34
41
  "react": ">=18",