@liberfi.io/hooks 0.1.1 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import react__default, { PropsWithChildren, RefObject, useLayoutEffect } from 'react';
3
+ import * as _liberfi_io_types from '@liberfi.io/types';
3
4
  import { API, Chain, Token, TokenResolution, TokenCandle, TokenHolder, TokenMarketData, TokenSecurity, TokenStats, TradeActivity, WalletPortfolios } from '@liberfi.io/types';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
6
  import * as _tanstack_react_query from '@tanstack/react-query';
@@ -16,7 +17,7 @@ declare global {
16
17
  };
17
18
  }
18
19
  }
19
- declare const _default: "0.1.0";
20
+ declare const _default: "0.1.4";
20
21
 
21
22
  interface APIClientContextValue {
22
23
  client: API.IClient;
@@ -55,12 +56,12 @@ declare function usePresignedUploadUrlQuery(options?: Omit<UseQueryOptions<strin
55
56
 
56
57
  type UseSearchTokensQueryParams = API.SearchTokensOptions;
57
58
  declare function searchTokensQueryKey(params: UseSearchTokensQueryParams): string[];
58
- declare function fetchSearchTokens(client: API.IClient, params: UseSearchTokensQueryParams): Promise<API.SearchTokenCursorList>;
59
- declare function useSearchTokensQuery(params: UseSearchTokensQueryParams, options?: Omit<UseQueryOptions<API.SearchTokenCursorList, Error, API.SearchTokenCursorList, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.SearchTokenCursorList, Error>;
59
+ declare function fetchSearchTokens(client: API.IClient, params: UseSearchTokensQueryParams): Promise<_liberfi_io_types.SearchTokenCursorList>;
60
+ declare function useSearchTokensQuery(params: UseSearchTokensQueryParams, options?: Omit<UseQueryOptions<API.SearchTokenCursorList, Error, API.SearchTokenCursorList, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<_liberfi_io_types.SearchTokenCursorList, Error>;
60
61
 
61
62
  type UseSendTxMutationParams = API.SendTxParams;
62
- declare function sendTx(client: API.IClient, params: UseSendTxMutationParams): Promise<API.SendTxResult>;
63
- declare function useSendTxMutation(options?: Omit<UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>, "mutationFn">): _tanstack_react_query.UseMutationResult<API.SendTxResult, Error, API.SendTxParams, unknown>;
63
+ declare function sendTx(client: API.IClient, params: UseSendTxMutationParams): Promise<_liberfi_io_types.SendTxResult>;
64
+ declare function useSendTxMutation(options?: Omit<UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>, "mutationFn">): _tanstack_react_query.UseMutationResult<_liberfi_io_types.SendTxResult, Error, _liberfi_io_types.SendTxParams, unknown>;
64
65
 
65
66
  interface UseStockTokensQueryParams extends API.GetTokenListOptions {
66
67
  chain: Chain;
@@ -71,8 +72,8 @@ declare function useStockTokensQuery(params: UseStockTokensQueryParams, options?
71
72
 
72
73
  type UseSwapRouteQueryParams = API.SwapParams;
73
74
  declare function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[];
74
- declare function fetchSwapRoute(client: API.IClient, params: UseSwapRouteQueryParams): Promise<API.SwapRoute>;
75
- declare function useSwapRouteQuery(params: UseSwapRouteQueryParams, options?: Omit<UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.SwapRoute, Error>;
75
+ declare function fetchSwapRoute(client: API.IClient, params: UseSwapRouteQueryParams): Promise<_liberfi_io_types.SwapRoute>;
76
+ declare function useSwapRouteQuery(params: UseSwapRouteQueryParams, options?: Omit<UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<_liberfi_io_types.SwapRoute, Error>;
76
77
 
77
78
  interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {
78
79
  chain: Chain;
@@ -88,7 +89,7 @@ interface UseTokenHoldersQueryParams extends API.CursorListOptions {
88
89
  address: string;
89
90
  }
90
91
  declare function tokenHoldersQueryKey(params: UseTokenHoldersQueryParams): string[];
91
- declare function fetchTokenHolders(client: API.IClient, { chain, address, ...options }: UseTokenHoldersQueryParams): Promise<API.CursorList<TokenHolder>>;
92
+ declare function fetchTokenHolders(client: API.IClient, { chain, address, ...options }: UseTokenHoldersQueryParams): Promise<_liberfi_io_types.CursorList<TokenHolder>>;
92
93
  declare function useTokenHoldersQuery(params: UseTokenHoldersQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TokenHolder>, Error, API.CursorList<TokenHolder>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TokenHolder>, Error>;
93
94
 
94
95
  interface UseTokenMarketDataQueryParams {
@@ -136,7 +137,7 @@ interface UseTokenTradeActivitiesQueryParams extends API.GetTradeActivitiesOptio
136
137
  address: string;
137
138
  }
138
139
  declare function tokenTradeActivitiesQueryKey(params: UseTokenTradeActivitiesQueryParams): string[];
139
- declare function fetchTokenTradeActivities(client: API.IClient, { chain, address, ...options }: UseTokenTradeActivitiesQueryParams): Promise<API.CursorList<TradeActivity>>;
140
+ declare function fetchTokenTradeActivities(client: API.IClient, { chain, address, ...options }: UseTokenTradeActivitiesQueryParams): Promise<_liberfi_io_types.CursorList<TradeActivity>>;
140
141
  declare function useTokenTradeActivitiesQuery(params: UseTokenTradeActivitiesQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TradeActivity>, Error, API.CursorList<TradeActivity>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TradeActivity>, Error>;
141
142
 
142
143
  interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {
@@ -169,7 +170,7 @@ interface UseWalletTradeActivitiesQueryParams extends API.GetTradeActivitiesOpti
169
170
  address: string;
170
171
  }
171
172
  declare function walletTradeActivitiesQueryKey(params: UseWalletTradeActivitiesQueryParams): string[];
172
- declare function fetchWalletTradeActivities(client: API.IClient, { chain, address, ...options }: UseWalletTradeActivitiesQueryParams): Promise<API.CursorList<TradeActivity>>;
173
+ declare function fetchWalletTradeActivities(client: API.IClient, { chain, address, ...options }: UseWalletTradeActivitiesQueryParams): Promise<_liberfi_io_types.CursorList<TradeActivity>>;
173
174
  declare function useWalletTradeActivitiesQuery(params: UseWalletTradeActivitiesQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TradeActivity>, Error, API.CursorList<TradeActivity>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TradeActivity>, Error>;
174
175
 
175
176
  interface WalletConnectorContextValue {
@@ -304,6 +305,11 @@ declare function useTick(callback: TickCallback, interval?: number): void;
304
305
  */
305
306
  declare function useTickAge(birthday?: number | Date, interval?: number): number;
306
307
 
308
+ /**
309
+ * Returns an always updated ref to value
310
+ */
311
+ declare function useValueRef<T>(value: T): RefObject<T>;
312
+
307
313
  type NotFunction<T> = T extends (...args: any[]) => any ? never : T;
308
314
  declare const useUpdatedRef: <T>(val: NotFunction<T>) => react.RefObject<T>;
309
315
 
@@ -346,4 +352,4 @@ declare const useSimpleDI: <T>() => {
346
352
  register: typeof SimpleDI.register;
347
353
  };
348
354
 
349
- export { APIClientContext, type APIClientContextValue, APIClientProvider, type APIClientProviderProps, type TickCallback, type TickEvent, type UnsubscribeTick, type UseBooleanReturn, type UseFinalStretchTokensQueryParams, type UseMigratedTokensQueryParams, type UseNewTokensQueryParams, type UseResizeObserverOptions, type UseSearchTokensQueryParams, type UseSendTxMutationParams, type UseStockTokensQueryParams, type UseSwapRouteQueryParams, type UseTokenCandlesQueryParams, type UseTokenHoldersQueryParams, type UseTokenMarketDataQueryParams, type UseTokenQueryParams, type UseTokenSecurityQueryParams, type UseTokenStatsQueryParams, type UseTokenTradeActivitiesQueryParams, type UseTokensQueryParams, type UseTrendingTokensQueryParams, type UseTxSuccessQueryParams, type UseWalletPortfoliosQueryParams, type UseWalletTradeActivitiesQueryParams, WalletConnectorContext, type WalletConnectorContextValue, WalletConnectorProvider, type WalletConnectorProviderProps, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, _default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
355
+ export { APIClientContext, type APIClientContextValue, APIClientProvider, type APIClientProviderProps, type TickCallback, type TickEvent, type UnsubscribeTick, type UseBooleanReturn, type UseFinalStretchTokensQueryParams, type UseMigratedTokensQueryParams, type UseNewTokensQueryParams, type UseResizeObserverOptions, type UseSearchTokensQueryParams, type UseSendTxMutationParams, type UseStockTokensQueryParams, type UseSwapRouteQueryParams, type UseTokenCandlesQueryParams, type UseTokenHoldersQueryParams, type UseTokenMarketDataQueryParams, type UseTokenQueryParams, type UseTokenSecurityQueryParams, type UseTokenStatsQueryParams, type UseTokenTradeActivitiesQueryParams, type UseTokensQueryParams, type UseTrendingTokensQueryParams, type UseTxSuccessQueryParams, type UseWalletPortfoliosQueryParams, type UseWalletTradeActivitiesQueryParams, WalletConnectorContext, type WalletConnectorContextValue, WalletConnectorProvider, type WalletConnectorProviderProps, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useValueRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, _default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import react__default, { PropsWithChildren, RefObject, useLayoutEffect } from 'react';
3
+ import * as _liberfi_io_types from '@liberfi.io/types';
3
4
  import { API, Chain, Token, TokenResolution, TokenCandle, TokenHolder, TokenMarketData, TokenSecurity, TokenStats, TradeActivity, WalletPortfolios } from '@liberfi.io/types';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
6
  import * as _tanstack_react_query from '@tanstack/react-query';
@@ -16,7 +17,7 @@ declare global {
16
17
  };
17
18
  }
18
19
  }
19
- declare const _default: "0.1.0";
20
+ declare const _default: "0.1.4";
20
21
 
21
22
  interface APIClientContextValue {
22
23
  client: API.IClient;
@@ -55,12 +56,12 @@ declare function usePresignedUploadUrlQuery(options?: Omit<UseQueryOptions<strin
55
56
 
56
57
  type UseSearchTokensQueryParams = API.SearchTokensOptions;
57
58
  declare function searchTokensQueryKey(params: UseSearchTokensQueryParams): string[];
58
- declare function fetchSearchTokens(client: API.IClient, params: UseSearchTokensQueryParams): Promise<API.SearchTokenCursorList>;
59
- declare function useSearchTokensQuery(params: UseSearchTokensQueryParams, options?: Omit<UseQueryOptions<API.SearchTokenCursorList, Error, API.SearchTokenCursorList, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.SearchTokenCursorList, Error>;
59
+ declare function fetchSearchTokens(client: API.IClient, params: UseSearchTokensQueryParams): Promise<_liberfi_io_types.SearchTokenCursorList>;
60
+ declare function useSearchTokensQuery(params: UseSearchTokensQueryParams, options?: Omit<UseQueryOptions<API.SearchTokenCursorList, Error, API.SearchTokenCursorList, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<_liberfi_io_types.SearchTokenCursorList, Error>;
60
61
 
61
62
  type UseSendTxMutationParams = API.SendTxParams;
62
- declare function sendTx(client: API.IClient, params: UseSendTxMutationParams): Promise<API.SendTxResult>;
63
- declare function useSendTxMutation(options?: Omit<UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>, "mutationFn">): _tanstack_react_query.UseMutationResult<API.SendTxResult, Error, API.SendTxParams, unknown>;
63
+ declare function sendTx(client: API.IClient, params: UseSendTxMutationParams): Promise<_liberfi_io_types.SendTxResult>;
64
+ declare function useSendTxMutation(options?: Omit<UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>, "mutationFn">): _tanstack_react_query.UseMutationResult<_liberfi_io_types.SendTxResult, Error, _liberfi_io_types.SendTxParams, unknown>;
64
65
 
65
66
  interface UseStockTokensQueryParams extends API.GetTokenListOptions {
66
67
  chain: Chain;
@@ -71,8 +72,8 @@ declare function useStockTokensQuery(params: UseStockTokensQueryParams, options?
71
72
 
72
73
  type UseSwapRouteQueryParams = API.SwapParams;
73
74
  declare function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[];
74
- declare function fetchSwapRoute(client: API.IClient, params: UseSwapRouteQueryParams): Promise<API.SwapRoute>;
75
- declare function useSwapRouteQuery(params: UseSwapRouteQueryParams, options?: Omit<UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.SwapRoute, Error>;
75
+ declare function fetchSwapRoute(client: API.IClient, params: UseSwapRouteQueryParams): Promise<_liberfi_io_types.SwapRoute>;
76
+ declare function useSwapRouteQuery(params: UseSwapRouteQueryParams, options?: Omit<UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<_liberfi_io_types.SwapRoute, Error>;
76
77
 
77
78
  interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {
78
79
  chain: Chain;
@@ -88,7 +89,7 @@ interface UseTokenHoldersQueryParams extends API.CursorListOptions {
88
89
  address: string;
89
90
  }
90
91
  declare function tokenHoldersQueryKey(params: UseTokenHoldersQueryParams): string[];
91
- declare function fetchTokenHolders(client: API.IClient, { chain, address, ...options }: UseTokenHoldersQueryParams): Promise<API.CursorList<TokenHolder>>;
92
+ declare function fetchTokenHolders(client: API.IClient, { chain, address, ...options }: UseTokenHoldersQueryParams): Promise<_liberfi_io_types.CursorList<TokenHolder>>;
92
93
  declare function useTokenHoldersQuery(params: UseTokenHoldersQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TokenHolder>, Error, API.CursorList<TokenHolder>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TokenHolder>, Error>;
93
94
 
94
95
  interface UseTokenMarketDataQueryParams {
@@ -136,7 +137,7 @@ interface UseTokenTradeActivitiesQueryParams extends API.GetTradeActivitiesOptio
136
137
  address: string;
137
138
  }
138
139
  declare function tokenTradeActivitiesQueryKey(params: UseTokenTradeActivitiesQueryParams): string[];
139
- declare function fetchTokenTradeActivities(client: API.IClient, { chain, address, ...options }: UseTokenTradeActivitiesQueryParams): Promise<API.CursorList<TradeActivity>>;
140
+ declare function fetchTokenTradeActivities(client: API.IClient, { chain, address, ...options }: UseTokenTradeActivitiesQueryParams): Promise<_liberfi_io_types.CursorList<TradeActivity>>;
140
141
  declare function useTokenTradeActivitiesQuery(params: UseTokenTradeActivitiesQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TradeActivity>, Error, API.CursorList<TradeActivity>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TradeActivity>, Error>;
141
142
 
142
143
  interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {
@@ -169,7 +170,7 @@ interface UseWalletTradeActivitiesQueryParams extends API.GetTradeActivitiesOpti
169
170
  address: string;
170
171
  }
171
172
  declare function walletTradeActivitiesQueryKey(params: UseWalletTradeActivitiesQueryParams): string[];
172
- declare function fetchWalletTradeActivities(client: API.IClient, { chain, address, ...options }: UseWalletTradeActivitiesQueryParams): Promise<API.CursorList<TradeActivity>>;
173
+ declare function fetchWalletTradeActivities(client: API.IClient, { chain, address, ...options }: UseWalletTradeActivitiesQueryParams): Promise<_liberfi_io_types.CursorList<TradeActivity>>;
173
174
  declare function useWalletTradeActivitiesQuery(params: UseWalletTradeActivitiesQueryParams, options?: Omit<UseQueryOptions<API.CursorList<TradeActivity>, Error, API.CursorList<TradeActivity>, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<API.CursorList<TradeActivity>, Error>;
174
175
 
175
176
  interface WalletConnectorContextValue {
@@ -304,6 +305,11 @@ declare function useTick(callback: TickCallback, interval?: number): void;
304
305
  */
305
306
  declare function useTickAge(birthday?: number | Date, interval?: number): number;
306
307
 
308
+ /**
309
+ * Returns an always updated ref to value
310
+ */
311
+ declare function useValueRef<T>(value: T): RefObject<T>;
312
+
307
313
  type NotFunction<T> = T extends (...args: any[]) => any ? never : T;
308
314
  declare const useUpdatedRef: <T>(val: NotFunction<T>) => react.RefObject<T>;
309
315
 
@@ -346,4 +352,4 @@ declare const useSimpleDI: <T>() => {
346
352
  register: typeof SimpleDI.register;
347
353
  };
348
354
 
349
- export { APIClientContext, type APIClientContextValue, APIClientProvider, type APIClientProviderProps, type TickCallback, type TickEvent, type UnsubscribeTick, type UseBooleanReturn, type UseFinalStretchTokensQueryParams, type UseMigratedTokensQueryParams, type UseNewTokensQueryParams, type UseResizeObserverOptions, type UseSearchTokensQueryParams, type UseSendTxMutationParams, type UseStockTokensQueryParams, type UseSwapRouteQueryParams, type UseTokenCandlesQueryParams, type UseTokenHoldersQueryParams, type UseTokenMarketDataQueryParams, type UseTokenQueryParams, type UseTokenSecurityQueryParams, type UseTokenStatsQueryParams, type UseTokenTradeActivitiesQueryParams, type UseTokensQueryParams, type UseTrendingTokensQueryParams, type UseTxSuccessQueryParams, type UseWalletPortfoliosQueryParams, type UseWalletTradeActivitiesQueryParams, WalletConnectorContext, type WalletConnectorContextValue, WalletConnectorProvider, type WalletConnectorProviderProps, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, _default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
355
+ export { APIClientContext, type APIClientContextValue, APIClientProvider, type APIClientProviderProps, type TickCallback, type TickEvent, type UnsubscribeTick, type UseBooleanReturn, type UseFinalStretchTokensQueryParams, type UseMigratedTokensQueryParams, type UseNewTokensQueryParams, type UseResizeObserverOptions, type UseSearchTokensQueryParams, type UseSendTxMutationParams, type UseStockTokensQueryParams, type UseSwapRouteQueryParams, type UseTokenCandlesQueryParams, type UseTokenHoldersQueryParams, type UseTokenMarketDataQueryParams, type UseTokenQueryParams, type UseTokenSecurityQueryParams, type UseTokenStatsQueryParams, type UseTokenTradeActivitiesQueryParams, type UseTokensQueryParams, type UseTrendingTokensQueryParams, type UseTxSuccessQueryParams, type UseWalletPortfoliosQueryParams, type UseWalletTradeActivitiesQueryParams, WalletConnectorContext, type WalletConnectorContextValue, WalletConnectorProvider, type WalletConnectorProviderProps, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useValueRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, _default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
package/dist/index.js CHANGED
@@ -19,9 +19,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
19
19
  // src/version.ts
20
20
  if (typeof window !== "undefined") {
21
21
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
22
- window.__LIBERFI_VERSION__["@liberfi.io/hooks"] = "0.1.0";
22
+ window.__LIBERFI_VERSION__["@liberfi.io/hooks"] = "0.1.4";
23
23
  }
24
- var version_default = "0.1.0";
24
+ var version_default = "0.1.4";
25
25
  var APIClientContext = React.createContext(
26
26
  {}
27
27
  );
@@ -610,6 +610,11 @@ function useTickAge(birthday = Date.now(), interval = 1e3) {
610
610
  useTick(tickAge, interval);
611
611
  return age;
612
612
  }
613
+ function useValueRef(value) {
614
+ const valueRef = React.useRef(value);
615
+ valueRef.current = value;
616
+ return valueRef;
617
+ }
613
618
  var useUpdatedRef = (val) => {
614
619
  const latestRef = React.useRef(val);
615
620
  latestRef.current = val;
@@ -868,6 +873,7 @@ exports.useTokensQuery = useTokensQuery;
868
873
  exports.useTrendingTokensQuery = useTrendingTokensQuery;
869
874
  exports.useTxSuccessQuery = useTxSuccessQuery;
870
875
  exports.useUpdatedRef = useUpdatedRef;
876
+ exports.useValueRef = useValueRef;
871
877
  exports.useWalletConnector = useWalletConnector;
872
878
  exports.useWalletPortfoliosQuery = useWalletPortfoliosQuery;
873
879
  exports.useWalletTradeActivitiesQuery = useWalletTradeActivitiesQuery;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/api/APIClientContext.ts","../src/api/APIClientProvider.tsx","../src/api/useAPIClient.ts","../src/api/useFinalStretchTokensQuery.ts","../src/api/useMigratedTokensQuery.ts","../src/api/useNewTokensQuery.ts","../src/api/usePresignedUploadUrlQuery.ts","../src/api/useSearchTokensQuery.ts","../src/api/useSendTxMutation.ts","../src/api/useStockTokensQuery.ts","../src/api/useSwapRouteQuery.ts","../src/api/useTokenCandlesQuery.ts","../src/api/useTokenHoldersQuery.ts","../src/api/useTokenMarketDataQuery.ts","../src/api/useTokenQuery.ts","../src/api/useTokenSecurityQuery.ts","../src/api/useTokensQuery.ts","../src/api/useTokenStatsQuery.ts","../src/api/useTokenTradeActivitiesQuery.ts","../src/api/useTrendingTokensQuery.ts","../src/api/useTxSuccessQuery.ts","../src/api/useWalletPortfoliosQuery.ts","../src/api/useWalletTradeActivitiesQuery.ts","../src/wallet/WalletConnectorContext.ts","../src/wallet/useWalletConnector.ts","../src/wallet/useWallets.ts","../src/wallet/WalletConnectorProvider.tsx","../src/useBoolean.ts","../src/useSafeLayoutEffect.ts","../src/useCallbackRef.ts","../src/useIsMounted.ts","../src/useResizeObserver.ts","../src/useTick.ts","../src/useTickAge.ts","../src/shared/useUpdatedRef.ts","../src/shared/useMemoizedFn.ts","../src/shared/useAudio.tsx","../src/useEventEmitter.ts","../src/utils/json.ts","../src/useSessionStorage.ts","../src/useLocalStorage.ts","../src/useSimpleDI.ts"],"names":["createContext","jsx","useContext","useQuery","useMutation","useState","useCallback","useLayoutEffect","useEffect","useRef","useMemo","React","useConstant","SimpleDI","EventEmitter"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/hooks\"] = \"0.1.0\";\n}\n\nexport default \"0.1.0\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface APIClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const APIClientContext = createContext<APIClientContextValue>(\n {} as APIClientContextValue,\n);\n","import { PropsWithChildren } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport type APIClientProviderProps = PropsWithChildren<APIClientContextValue>;\n\nexport function APIClientProvider({\n client,\n subscribeClient,\n children,\n}: APIClientProviderProps) {\n return (\n <APIClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </APIClientContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport function useAPIClient(): APIClientContextValue {\n const context = useContext(APIClientContext);\n if (!context) {\n throw new Error(\"useAPIClient must be used within an APIClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\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 } = useAPIClient();\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, TradeActivity } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { createContext } from \"react\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\n\nexport interface WalletConnectorContextValue {\n /**\n * detecting: is detecting connected wallets\n * connecting: is connecting to the first wallet\n * connected: is connected to at least one wallet\n * disconnecting: is disconnecting from the last connected wallet\n * disconnected: is disconnected from all wallets\n */\n status:\n | \"detecting\"\n | \"connecting\"\n | \"connected\"\n | \"disconnecting\"\n | \"disconnected\";\n // all wallets that can be used to take onchain actions when connected\n wallets: Array<WalletAdapter>;\n // if no wallets are connected, connect one or multiple wallets\n connect: () => Promise<void>;\n // disconnect all wallets\n disconnect: () => Promise<void>;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextValue>({} as WalletConnectorContextValue);\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallet connector hook\n * @returns wallet connector\n */\nexport function useWalletConnector() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\n \"useWalletConnector must be used within a WalletConnectorProvider\",\n );\n }\n return context;\n}\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallets hook\n * @returns all wallets that can be used to take onchain actions\n */\nexport function useWallets() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\"useWallets must be used within a WalletConnectorProvider\");\n }\n const { wallets } = context;\n return wallets;\n}\n","import { PropsWithChildren } from \"react\";\nimport {\n WalletConnectorContext,\n WalletConnectorContextValue,\n} from \"./WalletConnectorContext\";\n\nexport type WalletConnectorProviderProps =\n PropsWithChildren<WalletConnectorContextValue>;\n\nexport function WalletConnectorProvider({\n children,\n ...value\n}: WalletConnectorProviderProps) {\n return (\n <WalletConnectorContext.Provider value={value}>\n {children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useCallback, useState } from \"react\";\n\nexport type UseBooleanReturn = [\n /** current state */\n boolean,\n {\n /** set state to true */\n setTrue: () => void;\n /** set state to false */\n setFalse: () => void;\n /** toggle state */\n toggle: () => void;\n },\n];\n\n/**\n * Hook to manage a boolean state\n * @param initialValue Initial value of the boolean\n * @returns\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useSafeLayoutEffect = globalThis?.document\n ? useLayoutEffect\n : useEffect;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Part of this code is taken from @chakra-ui/system ❤️\n */\nimport { useCallback, useRef } from \"react\";\nimport { useSafeLayoutEffect } from \"./useSafeLayoutEffect\";\n\n/**\n * React hook to persist any value between renders,\n * but keeps it up-to-date if it changes.\n * @param fn the function to persist\n * @param deps the function dependency list\n */\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n fn: T | undefined,\n deps: React.DependencyList = [],\n): T {\n const ref = useRef(fn);\n\n useSafeLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback(((...args) => ref.current?.(...args)) as T, deps);\n}\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Custom hook that determines if the component is currently mounted.\n * @example\n * ```tsx\n * const isComponentMounted = useIsMounted();\n * // Use isComponentMounted() to check if the component is currently mounted before performing certain actions.\n * ```\n */\nexport function useIsMounted(): () => boolean {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import type { RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted\";\n\n/** The size of the observed element. */\ntype Size = {\n /** The width of the observed element. */\n width: number | undefined;\n /** The height of the observed element. */\n height: number | undefined;\n};\n\n/** The options for the ResizeObserver. */\nexport type UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n /** The ref of the element to observe. */\n ref: RefObject<T | null>;\n /**\n * When using `onResize`, the hook doesn't re-render on element size changes; it delegates handling to the provided callback.\n * @default undefined\n */\n onResize?: (size: Size) => void;\n /**\n * The box model to use for the ResizeObserver.\n * @default 'content-box'\n */\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\n/**\n * Custom hook that observes the size of an element using the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @template T - The type of the element to observe.\n * @see [Documentation](https://usehooks-ts.com/react-hook/use-resize-observer)\n * @example\n * ```tsx\n * const myRef = useRef(null);\n * const { width = 0, height = 0 } = useResizeObserver({\n * ref: myRef,\n * box: 'content-box',\n * });\n *\n * <div ref={myRef}>Hello, world!</div>\n * ```\n */\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>,\n): Size {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) return;\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) return;\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth ||\n previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize,\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n const boxSize = (\n Array.isArray(entry[box]) ? entry[box][0] : entry[box]\n ) as ResizeObserverSize;\n return boxSize[sizeType];\n}\n","import { useEffect } from \"react\";\nimport { useCallbackRef } from \"./useCallbackRef\";\n\nexport type TickEvent = {\n /** delta time in milliseconds since last tick */\n delta: number;\n /** current timestamp in milliseconds */\n now: number;\n};\n\nexport type TickCallback = (event: TickEvent) => void;\n\nexport type UnsubscribeTick = () => void;\n\ntype TickSubscription = {\n /** interval in milliseconds to execute the callback */\n interval: number;\n /** last executed timestamp in milliseconds */\n lastExecuted: number;\n};\n\n/**\n * Global timer singleton using setTimeout for better performance\n */\nclass GlobalTimer {\n /** singleton instance */\n private static instance: GlobalTimer;\n\n /** setTimeout id */\n private timeoutId: number | null = null;\n\n /** subscription map */\n private subscribers: Map<TickCallback, TickSubscription> = new Map();\n\n /** is timer running */\n private isRunning = false;\n\n /** internal update interval for smoothness */\n private readonly internalInterval = 200;\n\n /**\n * Get the singleton instance of the timer\n * @returns Timer instance\n */\n static getInstance(): GlobalTimer {\n if (!GlobalTimer.instance) {\n GlobalTimer.instance = new GlobalTimer();\n }\n return GlobalTimer.instance;\n }\n\n /**\n * Subscribe to the timer\n * @param callback tick callback\n * @param interval interval in milliseconds to execute the callback\n * @returns unsubscribe function\n */\n subscribe(callback: TickCallback, interval: number = 1000): UnsubscribeTick {\n this.subscribers.set(callback, {\n interval,\n lastExecuted: Date.now(),\n });\n\n // start timer if this is the first subscriber\n if (!this.isRunning) {\n this.start();\n }\n\n // return unsubscribe function\n return () => {\n this.subscribers.delete(callback);\n // stop timer if no more subscribers\n if (this.subscribers.size === 0) {\n this.stop();\n }\n };\n }\n\n private start(): void {\n if (this.isRunning) return;\n this.isRunning = true;\n this.scheduleNext();\n }\n\n private scheduleNext(): void {\n this.timeoutId = setTimeout(() => {\n const now = Date.now();\n\n // check each subscriber and execute if their interval has passed\n this.subscribers.forEach((config, callback) => {\n if (now - config.lastExecuted >= config.interval) {\n callback({ delta: now - config.lastExecuted, now });\n config.lastExecuted = now;\n }\n });\n\n // schedule next tick if still running\n if (this.isRunning) {\n this.scheduleNext();\n }\n }, this.internalInterval);\n }\n\n private stop(): void {\n this.isRunning = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n\n/**\n * Hook to call a callback at specified interval\n * @param callback Function to call at specified interval\n * @param interval Interval in milliseconds (default: 1000ms)\n * @returns\n */\nexport function useTick(callback: TickCallback, interval: number = 1000) {\n const callbackRef = useCallbackRef(callback);\n useEffect(\n () => GlobalTimer.getInstance().subscribe(callbackRef, interval),\n [interval],\n );\n}\n","import { useCallback, useRef, useState } from \"react\";\nimport { TickEvent, useTick } from \"./useTick\";\n\n/**\n * Hook to get the age in milliseconds since birthday in every tick\n * @param birthday Timestamp in milliseconds or Date object (default: now)\n * @param interval Tick interval in milliseconds (default: 1000ms)\n * @returns age in milliseconds since birthday\n */\nexport function useTickAge(\n birthday: number | Date = Date.now(),\n interval: number = 1000,\n) {\n const birthdayRef = useRef(\n birthday instanceof Date ? birthday.getTime() : birthday,\n );\n // keep ref updated\n birthdayRef.current =\n birthday instanceof Date ? birthday.getTime() : birthday;\n\n const [age, setAge] = useState(Math.max(0, Date.now() - birthdayRef.current));\n\n const tickAge = useCallback(\n ({ now }: TickEvent) => setAge(Math.max(0, now - birthdayRef.current)),\n [],\n );\n\n useTick(tickAge, interval);\n\n return age;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useRef } from \"react\";\n\ntype NotFunction<T> = T extends (...args: any[]) => any ? never : T;\n\nexport const useUpdatedRef = <T>(val: NotFunction<T>) => {\n const latestRef = useRef<T>(val);\n latestRef.current = val;\n return latestRef;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo, useRef } from \"react\";\n\ntype noop = (this: any, ...args: any[]) => any;\n\ntype PickFunction<T extends noop> = (\n this: ThisParameterType<T>,\n ...args: Parameters<T>\n) => ReturnType<T>;\n\nexport const useMemoizedFn = <T extends noop>(fn: T) => {\n if (typeof fn !== \"function\") {\n console.error(\n `useMemoizedFn expected parameter a function, got ${typeof fn}`,\n );\n }\n\n const fnRef = useRef<T>(fn);\n\n fnRef.current = useMemo<T>(() => fn, [fn]);\n\n const memoizedFn = useRef<PickFunction<T>>(undefined);\n\n if (!memoizedFn.current) {\n memoizedFn.current = function (this, ...args) {\n return fnRef.current.apply(this, args);\n };\n }\n\n return memoizedFn.current;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nexport interface AudioPlayerOptions {\n volume?: number;\n loop?: boolean;\n autoPlay?: boolean;\n}\n\nexport const useAudioPlayer = (\n src: string,\n options: AudioPlayerOptions = {},\n) => {\n const { volume = 1, loop, autoPlay } = options;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n const [status, setStatus] = useState<\n \"idle\" | \"play\" | \"playing\" | \"paused\" | \"ended\" | \"error\"\n >(\"idle\");\n\n const onPlay = () => {\n setStatus(\"play\");\n };\n\n const onPlaying = () => {\n setStatus(\"playing\");\n };\n\n const onPause = () => {\n setStatus(\"paused\");\n };\n\n const onEnded = () => {\n setStatus(\"ended\");\n };\n\n const onError = () => {\n setStatus(\"error\");\n };\n\n const element = useMemo(() => {\n return React.createElement(\"audio\", {\n controls: false,\n ref: audioRef,\n autoPlay: autoPlay,\n src: src,\n style: { display: \"none\" },\n onPlay: onPlay,\n onPlaying: onPlaying,\n onPause: onPause,\n onEnded: onEnded,\n onError: onError,\n });\n }, [autoPlay, src, onPlay, onPlaying, onPause, onEnded, onError]);\n\n useEffect(() => {\n const el = audioRef.current;\n if (!el) {\n return;\n }\n el.loop = loop ?? false;\n el.volume = Math.max(0, Math.min(1, volume));\n return () => {\n audioRef.current?.pause();\n audioRef.current = null;\n };\n }, [loop, volume]);\n\n return [element, audioRef, status] as const;\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@liberfi.io/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T,\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n return [storedValue, setValue];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options: {\n parseJSON: typeof parseJSON;\n } = {\n parseJSON: parseJSON,\n },\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (options.parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue],\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","import { SimpleDI } from \"@liberfi.io/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/api/APIClientContext.ts","../src/api/APIClientProvider.tsx","../src/api/useAPIClient.ts","../src/api/useFinalStretchTokensQuery.ts","../src/api/useMigratedTokensQuery.ts","../src/api/useNewTokensQuery.ts","../src/api/usePresignedUploadUrlQuery.ts","../src/api/useSearchTokensQuery.ts","../src/api/useSendTxMutation.ts","../src/api/useStockTokensQuery.ts","../src/api/useSwapRouteQuery.ts","../src/api/useTokenCandlesQuery.ts","../src/api/useTokenHoldersQuery.ts","../src/api/useTokenMarketDataQuery.ts","../src/api/useTokenQuery.ts","../src/api/useTokenSecurityQuery.ts","../src/api/useTokensQuery.ts","../src/api/useTokenStatsQuery.ts","../src/api/useTokenTradeActivitiesQuery.ts","../src/api/useTrendingTokensQuery.ts","../src/api/useTxSuccessQuery.ts","../src/api/useWalletPortfoliosQuery.ts","../src/api/useWalletTradeActivitiesQuery.ts","../src/wallet/WalletConnectorContext.ts","../src/wallet/useWalletConnector.ts","../src/wallet/useWallets.ts","../src/wallet/WalletConnectorProvider.tsx","../src/useBoolean.ts","../src/useSafeLayoutEffect.ts","../src/useCallbackRef.ts","../src/useIsMounted.ts","../src/useResizeObserver.ts","../src/useTick.ts","../src/useTickAge.ts","../src/useValueRef.ts","../src/shared/useUpdatedRef.ts","../src/shared/useMemoizedFn.ts","../src/shared/useAudio.tsx","../src/useEventEmitter.ts","../src/utils/json.ts","../src/useSessionStorage.ts","../src/useLocalStorage.ts","../src/useSimpleDI.ts"],"names":["createContext","jsx","useContext","useQuery","useMutation","useState","useCallback","useLayoutEffect","useEffect","useRef","useMemo","React","useConstant","SimpleDI","EventEmitter"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/hooks\"] = \"0.1.4\";\n}\n\nexport default \"0.1.4\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface APIClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const APIClientContext = createContext<APIClientContextValue>(\n {} as APIClientContextValue,\n);\n","import { PropsWithChildren } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport type APIClientProviderProps = PropsWithChildren<APIClientContextValue>;\n\nexport function APIClientProvider({\n client,\n subscribeClient,\n children,\n}: APIClientProviderProps) {\n return (\n <APIClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </APIClientContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport function useAPIClient(): APIClientContextValue {\n const context = useContext(APIClientContext);\n if (!context) {\n throw new Error(\"useAPIClient must be used within an APIClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\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 } = useAPIClient();\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, TradeActivity } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { createContext } from \"react\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\n\nexport interface WalletConnectorContextValue {\n /**\n * detecting: is detecting connected wallets\n * connecting: is connecting to the first wallet\n * connected: is connected to at least one wallet\n * disconnecting: is disconnecting from the last connected wallet\n * disconnected: is disconnected from all wallets\n */\n status:\n | \"detecting\"\n | \"connecting\"\n | \"connected\"\n | \"disconnecting\"\n | \"disconnected\";\n // all wallets that can be used to take onchain actions when connected\n wallets: Array<WalletAdapter>;\n // if no wallets are connected, connect one or multiple wallets\n connect: () => Promise<void>;\n // disconnect all wallets\n disconnect: () => Promise<void>;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextValue>({} as WalletConnectorContextValue);\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallet connector hook\n * @returns wallet connector\n */\nexport function useWalletConnector() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\n \"useWalletConnector must be used within a WalletConnectorProvider\",\n );\n }\n return context;\n}\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallets hook\n * @returns all wallets that can be used to take onchain actions\n */\nexport function useWallets() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\"useWallets must be used within a WalletConnectorProvider\");\n }\n const { wallets } = context;\n return wallets;\n}\n","import { PropsWithChildren } from \"react\";\nimport {\n WalletConnectorContext,\n WalletConnectorContextValue,\n} from \"./WalletConnectorContext\";\n\nexport type WalletConnectorProviderProps =\n PropsWithChildren<WalletConnectorContextValue>;\n\nexport function WalletConnectorProvider({\n children,\n ...value\n}: WalletConnectorProviderProps) {\n return (\n <WalletConnectorContext.Provider value={value}>\n {children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useCallback, useState } from \"react\";\n\nexport type UseBooleanReturn = [\n /** current state */\n boolean,\n {\n /** set state to true */\n setTrue: () => void;\n /** set state to false */\n setFalse: () => void;\n /** toggle state */\n toggle: () => void;\n },\n];\n\n/**\n * Hook to manage a boolean state\n * @param initialValue Initial value of the boolean\n * @returns\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useSafeLayoutEffect = globalThis?.document\n ? useLayoutEffect\n : useEffect;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Part of this code is taken from @chakra-ui/system ❤️\n */\nimport { useCallback, useRef } from \"react\";\nimport { useSafeLayoutEffect } from \"./useSafeLayoutEffect\";\n\n/**\n * React hook to persist any value between renders,\n * but keeps it up-to-date if it changes.\n * @param fn the function to persist\n * @param deps the function dependency list\n */\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n fn: T | undefined,\n deps: React.DependencyList = [],\n): T {\n const ref = useRef(fn);\n\n useSafeLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback(((...args) => ref.current?.(...args)) as T, deps);\n}\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Custom hook that determines if the component is currently mounted.\n * @example\n * ```tsx\n * const isComponentMounted = useIsMounted();\n * // Use isComponentMounted() to check if the component is currently mounted before performing certain actions.\n * ```\n */\nexport function useIsMounted(): () => boolean {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import type { RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted\";\n\n/** The size of the observed element. */\ntype Size = {\n /** The width of the observed element. */\n width: number | undefined;\n /** The height of the observed element. */\n height: number | undefined;\n};\n\n/** The options for the ResizeObserver. */\nexport type UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n /** The ref of the element to observe. */\n ref: RefObject<T | null>;\n /**\n * When using `onResize`, the hook doesn't re-render on element size changes; it delegates handling to the provided callback.\n * @default undefined\n */\n onResize?: (size: Size) => void;\n /**\n * The box model to use for the ResizeObserver.\n * @default 'content-box'\n */\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\n/**\n * Custom hook that observes the size of an element using the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @template T - The type of the element to observe.\n * @see [Documentation](https://usehooks-ts.com/react-hook/use-resize-observer)\n * @example\n * ```tsx\n * const myRef = useRef(null);\n * const { width = 0, height = 0 } = useResizeObserver({\n * ref: myRef,\n * box: 'content-box',\n * });\n *\n * <div ref={myRef}>Hello, world!</div>\n * ```\n */\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>,\n): Size {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) return;\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) return;\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth ||\n previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize,\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n const boxSize = (\n Array.isArray(entry[box]) ? entry[box][0] : entry[box]\n ) as ResizeObserverSize;\n return boxSize[sizeType];\n}\n","import { useEffect } from \"react\";\nimport { useCallbackRef } from \"./useCallbackRef\";\n\nexport type TickEvent = {\n /** delta time in milliseconds since last tick */\n delta: number;\n /** current timestamp in milliseconds */\n now: number;\n};\n\nexport type TickCallback = (event: TickEvent) => void;\n\nexport type UnsubscribeTick = () => void;\n\ntype TickSubscription = {\n /** interval in milliseconds to execute the callback */\n interval: number;\n /** last executed timestamp in milliseconds */\n lastExecuted: number;\n};\n\n/**\n * Global timer singleton using setTimeout for better performance\n */\nclass GlobalTimer {\n /** singleton instance */\n private static instance: GlobalTimer;\n\n /** setTimeout id */\n private timeoutId: number | null = null;\n\n /** subscription map */\n private subscribers: Map<TickCallback, TickSubscription> = new Map();\n\n /** is timer running */\n private isRunning = false;\n\n /** internal update interval for smoothness */\n private readonly internalInterval = 200;\n\n /**\n * Get the singleton instance of the timer\n * @returns Timer instance\n */\n static getInstance(): GlobalTimer {\n if (!GlobalTimer.instance) {\n GlobalTimer.instance = new GlobalTimer();\n }\n return GlobalTimer.instance;\n }\n\n /**\n * Subscribe to the timer\n * @param callback tick callback\n * @param interval interval in milliseconds to execute the callback\n * @returns unsubscribe function\n */\n subscribe(callback: TickCallback, interval: number = 1000): UnsubscribeTick {\n this.subscribers.set(callback, {\n interval,\n lastExecuted: Date.now(),\n });\n\n // start timer if this is the first subscriber\n if (!this.isRunning) {\n this.start();\n }\n\n // return unsubscribe function\n return () => {\n this.subscribers.delete(callback);\n // stop timer if no more subscribers\n if (this.subscribers.size === 0) {\n this.stop();\n }\n };\n }\n\n private start(): void {\n if (this.isRunning) return;\n this.isRunning = true;\n this.scheduleNext();\n }\n\n private scheduleNext(): void {\n this.timeoutId = setTimeout(() => {\n const now = Date.now();\n\n // check each subscriber and execute if their interval has passed\n this.subscribers.forEach((config, callback) => {\n if (now - config.lastExecuted >= config.interval) {\n callback({ delta: now - config.lastExecuted, now });\n config.lastExecuted = now;\n }\n });\n\n // schedule next tick if still running\n if (this.isRunning) {\n this.scheduleNext();\n }\n }, this.internalInterval);\n }\n\n private stop(): void {\n this.isRunning = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n\n/**\n * Hook to call a callback at specified interval\n * @param callback Function to call at specified interval\n * @param interval Interval in milliseconds (default: 1000ms)\n * @returns\n */\nexport function useTick(callback: TickCallback, interval: number = 1000) {\n const callbackRef = useCallbackRef(callback);\n useEffect(\n () => GlobalTimer.getInstance().subscribe(callbackRef, interval),\n [interval],\n );\n}\n","import { useCallback, useRef, useState } from \"react\";\nimport { TickEvent, useTick } from \"./useTick\";\n\n/**\n * Hook to get the age in milliseconds since birthday in every tick\n * @param birthday Timestamp in milliseconds or Date object (default: now)\n * @param interval Tick interval in milliseconds (default: 1000ms)\n * @returns age in milliseconds since birthday\n */\nexport function useTickAge(\n birthday: number | Date = Date.now(),\n interval: number = 1000,\n) {\n const birthdayRef = useRef(\n birthday instanceof Date ? birthday.getTime() : birthday,\n );\n // keep ref updated\n birthdayRef.current =\n birthday instanceof Date ? birthday.getTime() : birthday;\n\n const [age, setAge] = useState(Math.max(0, Date.now() - birthdayRef.current));\n\n const tickAge = useCallback(\n ({ now }: TickEvent) => setAge(Math.max(0, now - birthdayRef.current)),\n [],\n );\n\n useTick(tickAge, interval);\n\n return age;\n}\n","import { RefObject, useRef } from \"react\";\n\n/**\n * Returns an always updated ref to value\n */\nexport function useValueRef<T>(value: T): RefObject<T> {\n const valueRef = useRef<T>(value);\n valueRef.current = value;\n return valueRef;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useRef } from \"react\";\n\ntype NotFunction<T> = T extends (...args: any[]) => any ? never : T;\n\nexport const useUpdatedRef = <T>(val: NotFunction<T>) => {\n const latestRef = useRef<T>(val);\n latestRef.current = val;\n return latestRef;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo, useRef } from \"react\";\n\ntype noop = (this: any, ...args: any[]) => any;\n\ntype PickFunction<T extends noop> = (\n this: ThisParameterType<T>,\n ...args: Parameters<T>\n) => ReturnType<T>;\n\nexport const useMemoizedFn = <T extends noop>(fn: T) => {\n if (typeof fn !== \"function\") {\n console.error(\n `useMemoizedFn expected parameter a function, got ${typeof fn}`,\n );\n }\n\n const fnRef = useRef<T>(fn);\n\n fnRef.current = useMemo<T>(() => fn, [fn]);\n\n const memoizedFn = useRef<PickFunction<T>>(undefined);\n\n if (!memoizedFn.current) {\n memoizedFn.current = function (this, ...args) {\n return fnRef.current.apply(this, args);\n };\n }\n\n return memoizedFn.current;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nexport interface AudioPlayerOptions {\n volume?: number;\n loop?: boolean;\n autoPlay?: boolean;\n}\n\nexport const useAudioPlayer = (\n src: string,\n options: AudioPlayerOptions = {},\n) => {\n const { volume = 1, loop, autoPlay } = options;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n const [status, setStatus] = useState<\n \"idle\" | \"play\" | \"playing\" | \"paused\" | \"ended\" | \"error\"\n >(\"idle\");\n\n const onPlay = () => {\n setStatus(\"play\");\n };\n\n const onPlaying = () => {\n setStatus(\"playing\");\n };\n\n const onPause = () => {\n setStatus(\"paused\");\n };\n\n const onEnded = () => {\n setStatus(\"ended\");\n };\n\n const onError = () => {\n setStatus(\"error\");\n };\n\n const element = useMemo(() => {\n return React.createElement(\"audio\", {\n controls: false,\n ref: audioRef,\n autoPlay: autoPlay,\n src: src,\n style: { display: \"none\" },\n onPlay: onPlay,\n onPlaying: onPlaying,\n onPause: onPause,\n onEnded: onEnded,\n onError: onError,\n });\n }, [autoPlay, src, onPlay, onPlaying, onPause, onEnded, onError]);\n\n useEffect(() => {\n const el = audioRef.current;\n if (!el) {\n return;\n }\n el.loop = loop ?? false;\n el.volume = Math.max(0, Math.min(1, volume));\n return () => {\n audioRef.current?.pause();\n audioRef.current = null;\n };\n }, [loop, volume]);\n\n return [element, audioRef, status] as const;\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@liberfi.io/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T,\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n return [storedValue, setValue];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options: {\n parseJSON: typeof parseJSON;\n } = {\n parseJSON: parseJSON,\n },\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (options.parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue],\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","import { SimpleDI } from \"@liberfi.io/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n"]}
package/dist/index.mjs CHANGED
@@ -13,9 +13,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
13
13
  // src/version.ts
14
14
  if (typeof window !== "undefined") {
15
15
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
16
- window.__LIBERFI_VERSION__["@liberfi.io/hooks"] = "0.1.0";
16
+ window.__LIBERFI_VERSION__["@liberfi.io/hooks"] = "0.1.4";
17
17
  }
18
- var version_default = "0.1.0";
18
+ var version_default = "0.1.4";
19
19
  var APIClientContext = createContext(
20
20
  {}
21
21
  );
@@ -604,6 +604,11 @@ function useTickAge(birthday = Date.now(), interval = 1e3) {
604
604
  useTick(tickAge, interval);
605
605
  return age;
606
606
  }
607
+ function useValueRef(value) {
608
+ const valueRef = useRef(value);
609
+ valueRef.current = value;
610
+ return valueRef;
611
+ }
607
612
  var useUpdatedRef = (val) => {
608
613
  const latestRef = useRef(val);
609
614
  latestRef.current = val;
@@ -784,6 +789,6 @@ var useSimpleDI = () => {
784
789
  };
785
790
  };
786
791
 
787
- export { APIClientContext, APIClientProvider, WalletConnectorContext, WalletConnectorProvider, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, version_default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
792
+ export { APIClientContext, APIClientProvider, WalletConnectorContext, WalletConnectorProvider, fetchFinalStretchTokens, fetchMigratedTokens, fetchNewTokens, fetchPresignedUploadUrl, fetchSearchTokens, fetchStockTokens, fetchSwapRoute, fetchToken, fetchTokenCandles, fetchTokenHolders, fetchTokenMarketData, fetchTokenSecurity, fetchTokenStats, fetchTokenTradeActivities, fetchTokens, fetchTrendingTokens, fetchTxSuccess, fetchWalletPortfolios, fetchWalletTradeActivities, finalStretchTokensQueryKey, migratedTokensQueryKey, newTokensQueryKey, parseJSON, searchTokensQueryKey, sendTx, stockTokensQueryKey, swapRouteQueryKey, tokenCandlesQueryKey, tokenHoldersQueryKey, tokenMarketDataQueryKey, tokenQueryKey, tokenSecurityQueryKey, tokenStatsQueryKey, tokenTradeActivitiesQueryKey, tokensQueryKey, trendingTokensQueryKey, txSuccessQueryKey, useAPIClient, useAudioPlayer, useBoolean, useCallbackRef, useEventEmitter, useFinalStretchTokensQuery, useIsMounted, useLocalStorage, useMemoizedFn, useMigratedTokensQuery, useNewTokensQuery, usePresignedUploadUrlQuery, useResizeObserver, useSafeLayoutEffect, useSearchTokensQuery, useSendTxMutation, useSessionStorage, useSimpleDI, useStockTokensQuery, useSwapRouteQuery, useTick, useTickAge, useTokenCandlesQuery, useTokenHoldersQuery, useTokenMarketDataQuery, useTokenQuery, useTokenSecurityQuery, useTokenStatsQuery, useTokenTradeActivitiesQuery, useTokensQuery, useTrendingTokensQuery, useTxSuccessQuery, useUpdatedRef, useValueRef, useWalletConnector, useWalletPortfoliosQuery, useWalletTradeActivitiesQuery, useWallets, version_default as version, walletPortfoliosQueryKey, walletTradeActivitiesQueryKey };
788
793
  //# sourceMappingURL=index.mjs.map
789
794
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/api/APIClientContext.ts","../src/api/APIClientProvider.tsx","../src/api/useAPIClient.ts","../src/api/useFinalStretchTokensQuery.ts","../src/api/useMigratedTokensQuery.ts","../src/api/useNewTokensQuery.ts","../src/api/usePresignedUploadUrlQuery.ts","../src/api/useSearchTokensQuery.ts","../src/api/useSendTxMutation.ts","../src/api/useStockTokensQuery.ts","../src/api/useSwapRouteQuery.ts","../src/api/useTokenCandlesQuery.ts","../src/api/useTokenHoldersQuery.ts","../src/api/useTokenMarketDataQuery.ts","../src/api/useTokenQuery.ts","../src/api/useTokenSecurityQuery.ts","../src/api/useTokensQuery.ts","../src/api/useTokenStatsQuery.ts","../src/api/useTokenTradeActivitiesQuery.ts","../src/api/useTrendingTokensQuery.ts","../src/api/useTxSuccessQuery.ts","../src/api/useWalletPortfoliosQuery.ts","../src/api/useWalletTradeActivitiesQuery.ts","../src/wallet/WalletConnectorContext.ts","../src/wallet/useWalletConnector.ts","../src/wallet/useWallets.ts","../src/wallet/WalletConnectorProvider.tsx","../src/useBoolean.ts","../src/useSafeLayoutEffect.ts","../src/useCallbackRef.ts","../src/useIsMounted.ts","../src/useResizeObserver.ts","../src/useTick.ts","../src/useTickAge.ts","../src/shared/useUpdatedRef.ts","../src/shared/useMemoizedFn.ts","../src/shared/useAudio.tsx","../src/useEventEmitter.ts","../src/utils/json.ts","../src/useSessionStorage.ts","../src/useLocalStorage.ts","../src/useSimpleDI.ts"],"names":["useQuery","createContext","useContext","jsx","useCallback","useRef","useEffect","useState","useMemo","SimpleDI"],"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/hooks\"] = \"0.1.0\";\n}\n\nexport default \"0.1.0\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface APIClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const APIClientContext = createContext<APIClientContextValue>(\n {} as APIClientContextValue,\n);\n","import { PropsWithChildren } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport type APIClientProviderProps = PropsWithChildren<APIClientContextValue>;\n\nexport function APIClientProvider({\n client,\n subscribeClient,\n children,\n}: APIClientProviderProps) {\n return (\n <APIClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </APIClientContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport function useAPIClient(): APIClientContextValue {\n const context = useContext(APIClientContext);\n if (!context) {\n throw new Error(\"useAPIClient must be used within an APIClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\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 } = useAPIClient();\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, TradeActivity } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { createContext } from \"react\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\n\nexport interface WalletConnectorContextValue {\n /**\n * detecting: is detecting connected wallets\n * connecting: is connecting to the first wallet\n * connected: is connected to at least one wallet\n * disconnecting: is disconnecting from the last connected wallet\n * disconnected: is disconnected from all wallets\n */\n status:\n | \"detecting\"\n | \"connecting\"\n | \"connected\"\n | \"disconnecting\"\n | \"disconnected\";\n // all wallets that can be used to take onchain actions when connected\n wallets: Array<WalletAdapter>;\n // if no wallets are connected, connect one or multiple wallets\n connect: () => Promise<void>;\n // disconnect all wallets\n disconnect: () => Promise<void>;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextValue>({} as WalletConnectorContextValue);\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallet connector hook\n * @returns wallet connector\n */\nexport function useWalletConnector() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\n \"useWalletConnector must be used within a WalletConnectorProvider\",\n );\n }\n return context;\n}\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallets hook\n * @returns all wallets that can be used to take onchain actions\n */\nexport function useWallets() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\"useWallets must be used within a WalletConnectorProvider\");\n }\n const { wallets } = context;\n return wallets;\n}\n","import { PropsWithChildren } from \"react\";\nimport {\n WalletConnectorContext,\n WalletConnectorContextValue,\n} from \"./WalletConnectorContext\";\n\nexport type WalletConnectorProviderProps =\n PropsWithChildren<WalletConnectorContextValue>;\n\nexport function WalletConnectorProvider({\n children,\n ...value\n}: WalletConnectorProviderProps) {\n return (\n <WalletConnectorContext.Provider value={value}>\n {children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useCallback, useState } from \"react\";\n\nexport type UseBooleanReturn = [\n /** current state */\n boolean,\n {\n /** set state to true */\n setTrue: () => void;\n /** set state to false */\n setFalse: () => void;\n /** toggle state */\n toggle: () => void;\n },\n];\n\n/**\n * Hook to manage a boolean state\n * @param initialValue Initial value of the boolean\n * @returns\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useSafeLayoutEffect = globalThis?.document\n ? useLayoutEffect\n : useEffect;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Part of this code is taken from @chakra-ui/system ❤️\n */\nimport { useCallback, useRef } from \"react\";\nimport { useSafeLayoutEffect } from \"./useSafeLayoutEffect\";\n\n/**\n * React hook to persist any value between renders,\n * but keeps it up-to-date if it changes.\n * @param fn the function to persist\n * @param deps the function dependency list\n */\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n fn: T | undefined,\n deps: React.DependencyList = [],\n): T {\n const ref = useRef(fn);\n\n useSafeLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback(((...args) => ref.current?.(...args)) as T, deps);\n}\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Custom hook that determines if the component is currently mounted.\n * @example\n * ```tsx\n * const isComponentMounted = useIsMounted();\n * // Use isComponentMounted() to check if the component is currently mounted before performing certain actions.\n * ```\n */\nexport function useIsMounted(): () => boolean {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import type { RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted\";\n\n/** The size of the observed element. */\ntype Size = {\n /** The width of the observed element. */\n width: number | undefined;\n /** The height of the observed element. */\n height: number | undefined;\n};\n\n/** The options for the ResizeObserver. */\nexport type UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n /** The ref of the element to observe. */\n ref: RefObject<T | null>;\n /**\n * When using `onResize`, the hook doesn't re-render on element size changes; it delegates handling to the provided callback.\n * @default undefined\n */\n onResize?: (size: Size) => void;\n /**\n * The box model to use for the ResizeObserver.\n * @default 'content-box'\n */\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\n/**\n * Custom hook that observes the size of an element using the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @template T - The type of the element to observe.\n * @see [Documentation](https://usehooks-ts.com/react-hook/use-resize-observer)\n * @example\n * ```tsx\n * const myRef = useRef(null);\n * const { width = 0, height = 0 } = useResizeObserver({\n * ref: myRef,\n * box: 'content-box',\n * });\n *\n * <div ref={myRef}>Hello, world!</div>\n * ```\n */\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>,\n): Size {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) return;\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) return;\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth ||\n previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize,\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n const boxSize = (\n Array.isArray(entry[box]) ? entry[box][0] : entry[box]\n ) as ResizeObserverSize;\n return boxSize[sizeType];\n}\n","import { useEffect } from \"react\";\nimport { useCallbackRef } from \"./useCallbackRef\";\n\nexport type TickEvent = {\n /** delta time in milliseconds since last tick */\n delta: number;\n /** current timestamp in milliseconds */\n now: number;\n};\n\nexport type TickCallback = (event: TickEvent) => void;\n\nexport type UnsubscribeTick = () => void;\n\ntype TickSubscription = {\n /** interval in milliseconds to execute the callback */\n interval: number;\n /** last executed timestamp in milliseconds */\n lastExecuted: number;\n};\n\n/**\n * Global timer singleton using setTimeout for better performance\n */\nclass GlobalTimer {\n /** singleton instance */\n private static instance: GlobalTimer;\n\n /** setTimeout id */\n private timeoutId: number | null = null;\n\n /** subscription map */\n private subscribers: Map<TickCallback, TickSubscription> = new Map();\n\n /** is timer running */\n private isRunning = false;\n\n /** internal update interval for smoothness */\n private readonly internalInterval = 200;\n\n /**\n * Get the singleton instance of the timer\n * @returns Timer instance\n */\n static getInstance(): GlobalTimer {\n if (!GlobalTimer.instance) {\n GlobalTimer.instance = new GlobalTimer();\n }\n return GlobalTimer.instance;\n }\n\n /**\n * Subscribe to the timer\n * @param callback tick callback\n * @param interval interval in milliseconds to execute the callback\n * @returns unsubscribe function\n */\n subscribe(callback: TickCallback, interval: number = 1000): UnsubscribeTick {\n this.subscribers.set(callback, {\n interval,\n lastExecuted: Date.now(),\n });\n\n // start timer if this is the first subscriber\n if (!this.isRunning) {\n this.start();\n }\n\n // return unsubscribe function\n return () => {\n this.subscribers.delete(callback);\n // stop timer if no more subscribers\n if (this.subscribers.size === 0) {\n this.stop();\n }\n };\n }\n\n private start(): void {\n if (this.isRunning) return;\n this.isRunning = true;\n this.scheduleNext();\n }\n\n private scheduleNext(): void {\n this.timeoutId = setTimeout(() => {\n const now = Date.now();\n\n // check each subscriber and execute if their interval has passed\n this.subscribers.forEach((config, callback) => {\n if (now - config.lastExecuted >= config.interval) {\n callback({ delta: now - config.lastExecuted, now });\n config.lastExecuted = now;\n }\n });\n\n // schedule next tick if still running\n if (this.isRunning) {\n this.scheduleNext();\n }\n }, this.internalInterval);\n }\n\n private stop(): void {\n this.isRunning = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n\n/**\n * Hook to call a callback at specified interval\n * @param callback Function to call at specified interval\n * @param interval Interval in milliseconds (default: 1000ms)\n * @returns\n */\nexport function useTick(callback: TickCallback, interval: number = 1000) {\n const callbackRef = useCallbackRef(callback);\n useEffect(\n () => GlobalTimer.getInstance().subscribe(callbackRef, interval),\n [interval],\n );\n}\n","import { useCallback, useRef, useState } from \"react\";\nimport { TickEvent, useTick } from \"./useTick\";\n\n/**\n * Hook to get the age in milliseconds since birthday in every tick\n * @param birthday Timestamp in milliseconds or Date object (default: now)\n * @param interval Tick interval in milliseconds (default: 1000ms)\n * @returns age in milliseconds since birthday\n */\nexport function useTickAge(\n birthday: number | Date = Date.now(),\n interval: number = 1000,\n) {\n const birthdayRef = useRef(\n birthday instanceof Date ? birthday.getTime() : birthday,\n );\n // keep ref updated\n birthdayRef.current =\n birthday instanceof Date ? birthday.getTime() : birthday;\n\n const [age, setAge] = useState(Math.max(0, Date.now() - birthdayRef.current));\n\n const tickAge = useCallback(\n ({ now }: TickEvent) => setAge(Math.max(0, now - birthdayRef.current)),\n [],\n );\n\n useTick(tickAge, interval);\n\n return age;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useRef } from \"react\";\n\ntype NotFunction<T> = T extends (...args: any[]) => any ? never : T;\n\nexport const useUpdatedRef = <T>(val: NotFunction<T>) => {\n const latestRef = useRef<T>(val);\n latestRef.current = val;\n return latestRef;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo, useRef } from \"react\";\n\ntype noop = (this: any, ...args: any[]) => any;\n\ntype PickFunction<T extends noop> = (\n this: ThisParameterType<T>,\n ...args: Parameters<T>\n) => ReturnType<T>;\n\nexport const useMemoizedFn = <T extends noop>(fn: T) => {\n if (typeof fn !== \"function\") {\n console.error(\n `useMemoizedFn expected parameter a function, got ${typeof fn}`,\n );\n }\n\n const fnRef = useRef<T>(fn);\n\n fnRef.current = useMemo<T>(() => fn, [fn]);\n\n const memoizedFn = useRef<PickFunction<T>>(undefined);\n\n if (!memoizedFn.current) {\n memoizedFn.current = function (this, ...args) {\n return fnRef.current.apply(this, args);\n };\n }\n\n return memoizedFn.current;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nexport interface AudioPlayerOptions {\n volume?: number;\n loop?: boolean;\n autoPlay?: boolean;\n}\n\nexport const useAudioPlayer = (\n src: string,\n options: AudioPlayerOptions = {},\n) => {\n const { volume = 1, loop, autoPlay } = options;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n const [status, setStatus] = useState<\n \"idle\" | \"play\" | \"playing\" | \"paused\" | \"ended\" | \"error\"\n >(\"idle\");\n\n const onPlay = () => {\n setStatus(\"play\");\n };\n\n const onPlaying = () => {\n setStatus(\"playing\");\n };\n\n const onPause = () => {\n setStatus(\"paused\");\n };\n\n const onEnded = () => {\n setStatus(\"ended\");\n };\n\n const onError = () => {\n setStatus(\"error\");\n };\n\n const element = useMemo(() => {\n return React.createElement(\"audio\", {\n controls: false,\n ref: audioRef,\n autoPlay: autoPlay,\n src: src,\n style: { display: \"none\" },\n onPlay: onPlay,\n onPlaying: onPlaying,\n onPause: onPause,\n onEnded: onEnded,\n onError: onError,\n });\n }, [autoPlay, src, onPlay, onPlaying, onPause, onEnded, onError]);\n\n useEffect(() => {\n const el = audioRef.current;\n if (!el) {\n return;\n }\n el.loop = loop ?? false;\n el.volume = Math.max(0, Math.min(1, volume));\n return () => {\n audioRef.current?.pause();\n audioRef.current = null;\n };\n }, [loop, volume]);\n\n return [element, audioRef, status] as const;\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@liberfi.io/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T,\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n return [storedValue, setValue];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options: {\n parseJSON: typeof parseJSON;\n } = {\n parseJSON: parseJSON,\n },\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (options.parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue],\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","import { SimpleDI } from \"@liberfi.io/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/api/APIClientContext.ts","../src/api/APIClientProvider.tsx","../src/api/useAPIClient.ts","../src/api/useFinalStretchTokensQuery.ts","../src/api/useMigratedTokensQuery.ts","../src/api/useNewTokensQuery.ts","../src/api/usePresignedUploadUrlQuery.ts","../src/api/useSearchTokensQuery.ts","../src/api/useSendTxMutation.ts","../src/api/useStockTokensQuery.ts","../src/api/useSwapRouteQuery.ts","../src/api/useTokenCandlesQuery.ts","../src/api/useTokenHoldersQuery.ts","../src/api/useTokenMarketDataQuery.ts","../src/api/useTokenQuery.ts","../src/api/useTokenSecurityQuery.ts","../src/api/useTokensQuery.ts","../src/api/useTokenStatsQuery.ts","../src/api/useTokenTradeActivitiesQuery.ts","../src/api/useTrendingTokensQuery.ts","../src/api/useTxSuccessQuery.ts","../src/api/useWalletPortfoliosQuery.ts","../src/api/useWalletTradeActivitiesQuery.ts","../src/wallet/WalletConnectorContext.ts","../src/wallet/useWalletConnector.ts","../src/wallet/useWallets.ts","../src/wallet/WalletConnectorProvider.tsx","../src/useBoolean.ts","../src/useSafeLayoutEffect.ts","../src/useCallbackRef.ts","../src/useIsMounted.ts","../src/useResizeObserver.ts","../src/useTick.ts","../src/useTickAge.ts","../src/useValueRef.ts","../src/shared/useUpdatedRef.ts","../src/shared/useMemoizedFn.ts","../src/shared/useAudio.tsx","../src/useEventEmitter.ts","../src/utils/json.ts","../src/useSessionStorage.ts","../src/useLocalStorage.ts","../src/useSimpleDI.ts"],"names":["useQuery","createContext","useContext","jsx","useCallback","useRef","useEffect","useState","useMemo","SimpleDI"],"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/hooks\"] = \"0.1.4\";\n}\n\nexport default \"0.1.4\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface APIClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const APIClientContext = createContext<APIClientContextValue>(\n {} as APIClientContextValue,\n);\n","import { PropsWithChildren } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport type APIClientProviderProps = PropsWithChildren<APIClientContextValue>;\n\nexport function APIClientProvider({\n client,\n subscribeClient,\n children,\n}: APIClientProviderProps) {\n return (\n <APIClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </APIClientContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { APIClientContext, APIClientContextValue } from \"./APIClientContext\";\n\nexport function useAPIClient(): APIClientContextValue {\n const context = useContext(APIClientContext);\n if (!context) {\n throw new Error(\"useAPIClient must be used within an APIClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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 { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\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, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\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 } = useAPIClient();\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, TradeActivity } from \"@liberfi.io/types\";\nimport { useAPIClient } from \"./useAPIClient\";\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 } = useAPIClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { createContext } from \"react\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\n\nexport interface WalletConnectorContextValue {\n /**\n * detecting: is detecting connected wallets\n * connecting: is connecting to the first wallet\n * connected: is connected to at least one wallet\n * disconnecting: is disconnecting from the last connected wallet\n * disconnected: is disconnected from all wallets\n */\n status:\n | \"detecting\"\n | \"connecting\"\n | \"connected\"\n | \"disconnecting\"\n | \"disconnected\";\n // all wallets that can be used to take onchain actions when connected\n wallets: Array<WalletAdapter>;\n // if no wallets are connected, connect one or multiple wallets\n connect: () => Promise<void>;\n // disconnect all wallets\n disconnect: () => Promise<void>;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextValue>({} as WalletConnectorContextValue);\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallet connector hook\n * @returns wallet connector\n */\nexport function useWalletConnector() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\n \"useWalletConnector must be used within a WalletConnectorProvider\",\n );\n }\n return context;\n}\n","import { useContext } from \"react\";\nimport { WalletConnectorContext } from \"./WalletConnectorContext\";\n\n/**\n * use wallets hook\n * @returns all wallets that can be used to take onchain actions\n */\nexport function useWallets() {\n const context = useContext(WalletConnectorContext);\n if (!context) {\n throw new Error(\"useWallets must be used within a WalletConnectorProvider\");\n }\n const { wallets } = context;\n return wallets;\n}\n","import { PropsWithChildren } from \"react\";\nimport {\n WalletConnectorContext,\n WalletConnectorContextValue,\n} from \"./WalletConnectorContext\";\n\nexport type WalletConnectorProviderProps =\n PropsWithChildren<WalletConnectorContextValue>;\n\nexport function WalletConnectorProvider({\n children,\n ...value\n}: WalletConnectorProviderProps) {\n return (\n <WalletConnectorContext.Provider value={value}>\n {children}\n </WalletConnectorContext.Provider>\n );\n}\n","import { useCallback, useState } from \"react\";\n\nexport type UseBooleanReturn = [\n /** current state */\n boolean,\n {\n /** set state to true */\n setTrue: () => void;\n /** set state to false */\n setFalse: () => void;\n /** toggle state */\n toggle: () => void;\n },\n];\n\n/**\n * Hook to manage a boolean state\n * @param initialValue Initial value of the boolean\n * @returns\n */\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useSafeLayoutEffect = globalThis?.document\n ? useLayoutEffect\n : useEffect;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Part of this code is taken from @chakra-ui/system ❤️\n */\nimport { useCallback, useRef } from \"react\";\nimport { useSafeLayoutEffect } from \"./useSafeLayoutEffect\";\n\n/**\n * React hook to persist any value between renders,\n * but keeps it up-to-date if it changes.\n * @param fn the function to persist\n * @param deps the function dependency list\n */\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n fn: T | undefined,\n deps: React.DependencyList = [],\n): T {\n const ref = useRef(fn);\n\n useSafeLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback(((...args) => ref.current?.(...args)) as T, deps);\n}\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Custom hook that determines if the component is currently mounted.\n * @example\n * ```tsx\n * const isComponentMounted = useIsMounted();\n * // Use isComponentMounted() to check if the component is currently mounted before performing certain actions.\n * ```\n */\nexport function useIsMounted(): () => boolean {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n}\n","import type { RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted\";\n\n/** The size of the observed element. */\ntype Size = {\n /** The width of the observed element. */\n width: number | undefined;\n /** The height of the observed element. */\n height: number | undefined;\n};\n\n/** The options for the ResizeObserver. */\nexport type UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {\n /** The ref of the element to observe. */\n ref: RefObject<T | null>;\n /**\n * When using `onResize`, the hook doesn't re-render on element size changes; it delegates handling to the provided callback.\n * @default undefined\n */\n onResize?: (size: Size) => void;\n /**\n * The box model to use for the ResizeObserver.\n * @default 'content-box'\n */\n box?: \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\n};\n\nconst initialSize: Size = {\n width: undefined,\n height: undefined,\n};\n\n/**\n * Custom hook that observes the size of an element using the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @template T - The type of the element to observe.\n * @see [Documentation](https://usehooks-ts.com/react-hook/use-resize-observer)\n * @example\n * ```tsx\n * const myRef = useRef(null);\n * const { width = 0, height = 0 } = useResizeObserver({\n * ref: myRef,\n * box: 'content-box',\n * });\n *\n * <div ref={myRef}>Hello, world!</div>\n * ```\n */\nexport function useResizeObserver<T extends HTMLElement = HTMLElement>(\n options: UseResizeObserverOptions<T>,\n): Size {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState<Size>(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef<Size>({ ...initialSize });\n const onResize = useRef<((size: Size) => void) | undefined>(undefined);\n onResize.current = options.onResize;\n\n useEffect(() => {\n if (!ref.current) return;\n\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) return;\n\n const observer = new ResizeObserver(([entry]) => {\n const boxProp =\n box === \"border-box\"\n ? \"borderBoxSize\"\n : box === \"device-pixel-content-box\"\n ? \"devicePixelContentBoxSize\"\n : \"contentBoxSize\";\n\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n\n const hasChanged =\n previousSize.current.width !== newWidth ||\n previousSize.current.height !== newHeight;\n\n if (hasChanged) {\n const newSize: Size = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n\n observer.observe(ref.current, { box });\n\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n\n return { width, height };\n}\n\ntype BoxSizesKey = keyof Pick<\n ResizeObserverEntry,\n \"borderBoxSize\" | \"contentBoxSize\" | \"devicePixelContentBoxSize\"\n>;\n\nfunction extractSize(\n entry: ResizeObserverEntry,\n box: BoxSizesKey,\n sizeType: keyof ResizeObserverSize,\n): number | undefined {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return undefined;\n }\n const boxSize = (\n Array.isArray(entry[box]) ? entry[box][0] : entry[box]\n ) as ResizeObserverSize;\n return boxSize[sizeType];\n}\n","import { useEffect } from \"react\";\nimport { useCallbackRef } from \"./useCallbackRef\";\n\nexport type TickEvent = {\n /** delta time in milliseconds since last tick */\n delta: number;\n /** current timestamp in milliseconds */\n now: number;\n};\n\nexport type TickCallback = (event: TickEvent) => void;\n\nexport type UnsubscribeTick = () => void;\n\ntype TickSubscription = {\n /** interval in milliseconds to execute the callback */\n interval: number;\n /** last executed timestamp in milliseconds */\n lastExecuted: number;\n};\n\n/**\n * Global timer singleton using setTimeout for better performance\n */\nclass GlobalTimer {\n /** singleton instance */\n private static instance: GlobalTimer;\n\n /** setTimeout id */\n private timeoutId: number | null = null;\n\n /** subscription map */\n private subscribers: Map<TickCallback, TickSubscription> = new Map();\n\n /** is timer running */\n private isRunning = false;\n\n /** internal update interval for smoothness */\n private readonly internalInterval = 200;\n\n /**\n * Get the singleton instance of the timer\n * @returns Timer instance\n */\n static getInstance(): GlobalTimer {\n if (!GlobalTimer.instance) {\n GlobalTimer.instance = new GlobalTimer();\n }\n return GlobalTimer.instance;\n }\n\n /**\n * Subscribe to the timer\n * @param callback tick callback\n * @param interval interval in milliseconds to execute the callback\n * @returns unsubscribe function\n */\n subscribe(callback: TickCallback, interval: number = 1000): UnsubscribeTick {\n this.subscribers.set(callback, {\n interval,\n lastExecuted: Date.now(),\n });\n\n // start timer if this is the first subscriber\n if (!this.isRunning) {\n this.start();\n }\n\n // return unsubscribe function\n return () => {\n this.subscribers.delete(callback);\n // stop timer if no more subscribers\n if (this.subscribers.size === 0) {\n this.stop();\n }\n };\n }\n\n private start(): void {\n if (this.isRunning) return;\n this.isRunning = true;\n this.scheduleNext();\n }\n\n private scheduleNext(): void {\n this.timeoutId = setTimeout(() => {\n const now = Date.now();\n\n // check each subscriber and execute if their interval has passed\n this.subscribers.forEach((config, callback) => {\n if (now - config.lastExecuted >= config.interval) {\n callback({ delta: now - config.lastExecuted, now });\n config.lastExecuted = now;\n }\n });\n\n // schedule next tick if still running\n if (this.isRunning) {\n this.scheduleNext();\n }\n }, this.internalInterval);\n }\n\n private stop(): void {\n this.isRunning = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n}\n\n/**\n * Hook to call a callback at specified interval\n * @param callback Function to call at specified interval\n * @param interval Interval in milliseconds (default: 1000ms)\n * @returns\n */\nexport function useTick(callback: TickCallback, interval: number = 1000) {\n const callbackRef = useCallbackRef(callback);\n useEffect(\n () => GlobalTimer.getInstance().subscribe(callbackRef, interval),\n [interval],\n );\n}\n","import { useCallback, useRef, useState } from \"react\";\nimport { TickEvent, useTick } from \"./useTick\";\n\n/**\n * Hook to get the age in milliseconds since birthday in every tick\n * @param birthday Timestamp in milliseconds or Date object (default: now)\n * @param interval Tick interval in milliseconds (default: 1000ms)\n * @returns age in milliseconds since birthday\n */\nexport function useTickAge(\n birthday: number | Date = Date.now(),\n interval: number = 1000,\n) {\n const birthdayRef = useRef(\n birthday instanceof Date ? birthday.getTime() : birthday,\n );\n // keep ref updated\n birthdayRef.current =\n birthday instanceof Date ? birthday.getTime() : birthday;\n\n const [age, setAge] = useState(Math.max(0, Date.now() - birthdayRef.current));\n\n const tickAge = useCallback(\n ({ now }: TickEvent) => setAge(Math.max(0, now - birthdayRef.current)),\n [],\n );\n\n useTick(tickAge, interval);\n\n return age;\n}\n","import { RefObject, useRef } from \"react\";\n\n/**\n * Returns an always updated ref to value\n */\nexport function useValueRef<T>(value: T): RefObject<T> {\n const valueRef = useRef<T>(value);\n valueRef.current = value;\n return valueRef;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useRef } from \"react\";\n\ntype NotFunction<T> = T extends (...args: any[]) => any ? never : T;\n\nexport const useUpdatedRef = <T>(val: NotFunction<T>) => {\n const latestRef = useRef<T>(val);\n latestRef.current = val;\n return latestRef;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo, useRef } from \"react\";\n\ntype noop = (this: any, ...args: any[]) => any;\n\ntype PickFunction<T extends noop> = (\n this: ThisParameterType<T>,\n ...args: Parameters<T>\n) => ReturnType<T>;\n\nexport const useMemoizedFn = <T extends noop>(fn: T) => {\n if (typeof fn !== \"function\") {\n console.error(\n `useMemoizedFn expected parameter a function, got ${typeof fn}`,\n );\n }\n\n const fnRef = useRef<T>(fn);\n\n fnRef.current = useMemo<T>(() => fn, [fn]);\n\n const memoizedFn = useRef<PickFunction<T>>(undefined);\n\n if (!memoizedFn.current) {\n memoizedFn.current = function (this, ...args) {\n return fnRef.current.apply(this, args);\n };\n }\n\n return memoizedFn.current;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nexport interface AudioPlayerOptions {\n volume?: number;\n loop?: boolean;\n autoPlay?: boolean;\n}\n\nexport const useAudioPlayer = (\n src: string,\n options: AudioPlayerOptions = {},\n) => {\n const { volume = 1, loop, autoPlay } = options;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n const [status, setStatus] = useState<\n \"idle\" | \"play\" | \"playing\" | \"paused\" | \"ended\" | \"error\"\n >(\"idle\");\n\n const onPlay = () => {\n setStatus(\"play\");\n };\n\n const onPlaying = () => {\n setStatus(\"playing\");\n };\n\n const onPause = () => {\n setStatus(\"paused\");\n };\n\n const onEnded = () => {\n setStatus(\"ended\");\n };\n\n const onError = () => {\n setStatus(\"error\");\n };\n\n const element = useMemo(() => {\n return React.createElement(\"audio\", {\n controls: false,\n ref: audioRef,\n autoPlay: autoPlay,\n src: src,\n style: { display: \"none\" },\n onPlay: onPlay,\n onPlaying: onPlaying,\n onPause: onPause,\n onEnded: onEnded,\n onError: onError,\n });\n }, [autoPlay, src, onPlay, onPlaying, onPause, onEnded, onError]);\n\n useEffect(() => {\n const el = audioRef.current;\n if (!el) {\n return;\n }\n el.loop = loop ?? false;\n el.volume = Math.max(0, Math.min(1, volume));\n return () => {\n audioRef.current?.pause();\n audioRef.current = null;\n };\n }, [loop, volume]);\n\n return [element, audioRef, status] as const;\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@liberfi.io/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T,\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n return [storedValue, setValue];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options: {\n parseJSON: typeof parseJSON;\n } = {\n parseJSON: parseJSON,\n },\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (options.parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`,\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue],\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","import { SimpleDI } from \"@liberfi.io/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liberfi.io/hooks",
3
- "version": "0.1.1",
3
+ "version": "0.1.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -19,9 +19,9 @@
19
19
  "react-dom": "^19.1.1",
20
20
  "use-constant": "^2.0.0",
21
21
  "use-debounce": "^10.0.6",
22
- "@liberfi.io/types": "0.1.1",
23
- "@liberfi.io/core": "0.1.0",
24
- "@liberfi.io/utils": "0.1.1"
22
+ "@liberfi.io/core": "0.1.5",
23
+ "@liberfi.io/utils": "0.1.5",
24
+ "@liberfi.io/types": "0.1.5"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/core": "^7.22.9",
@@ -46,7 +46,7 @@
46
46
  "tsup": "^8.5.0",
47
47
  "typedoc": "^0.28.12",
48
48
  "typescript": "^5.9.2",
49
- "tsconfig": "0.1.0"
49
+ "tsconfig": "0.1.4"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"