subgraph-sync
Version:
React hooks and components for tracking subgraph synchronization states with Apollo Client
59 lines (58 loc) • 2.73 kB
TypeScript
import { DocumentNode, OperationVariables } from "@apollo/client";
import { QueryWithSyncOptions } from "../types";
/**
* Enhanced Apollo useQuery hook that includes subgraph synchronization tracking.
* Combines GraphQL query execution with sync state monitoring.
*
* @param query - GraphQL query document
* @param options - Combined Apollo query options and sync configuration
*
* @returns All Apollo query result properties plus sync state
*
* @example
* ```tsx
* const { data, loading, isIndexing, isSynced, progress } = useSubgraphQuery(
* GET_USER_QUERY,
* {
* variables: { id: '0x123' },
* targetBlockNumber: 1000000,
* syncConfig: { pollInterval: 2000 },
* }
* );
* ```
*/
export declare function useSubgraphQuery<TData = any, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode, options?: QueryWithSyncOptions<TVariables>): {
isLoading: boolean;
hasError: boolean;
refetch: () => Promise<any>;
reset: () => void;
isIndexing: boolean;
isSynced: boolean;
isTimeout: boolean;
isError: boolean;
currentBlock: import("../types").Block | null;
targetBlock: import("../types").Block | null;
progress: number;
error: string | null;
retries: number;
called: boolean;
client: import("@apollo/client").ApolloClient<any>;
observable: import("@apollo/client").ObservableQuery<TData, TVariables>;
data: TData | undefined;
previousData?: TData | undefined;
errors?: readonly import("graphql").GraphQLFormattedError[] | undefined;
loading: boolean;
networkStatus: import("@apollo/client").NetworkStatus;
startPolling: (pollInterval: number) => void;
stopPolling: () => void;
subscribeToMore: import("@apollo/client").SubscribeToMoreFunction<TData, TVariables>;
updateQuery: (mapFn: import("@apollo/client").UpdateQueryMapFn<TData, TVariables>) => void;
reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<TVariables, TData>> | undefined, newNetworkStatus?: import("@apollo/client").NetworkStatus | undefined) => Promise<import("@apollo/client").ApolloQueryResult<TData>>;
variables: TVariables | undefined;
fetchMore: <TFetchData = TData, TFetchVars extends OperationVariables = TVariables>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
updateQuery?: ((previousQueryResult: import("@apollo/client").Unmasked<TData>, options: {
fetchMoreResult: import("@apollo/client").Unmasked<TFetchData>;
variables: TFetchVars;
}) => import("@apollo/client").Unmasked<TData>) | undefined;
}) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
};