import { KeyFactory } from '@/synapse-queries/index';
import { CreateGridRequest, CreateGridResponse, CreateReplicaResponse, GridSession, ListGridSessionsRequest, ListGridSessionsResponse, SynapseClient, SynchronizeGridRequest, SynchronizeGridResponse } from '@sage-bionetworks/synapse-client';
import { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError';
import { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseMutationOptions, UseQueryOptions } from '@tanstack/react-query';
export declare function useCreateGridReplica(options?: Partial<UseMutationOptions<CreateReplicaResponse, SynapseClientError, string>>): import("@tanstack/react-query").UseMutationResult<CreateReplicaResponse, SynapseClientError, string, unknown>;
export declare function useDeleteGridSession(options?: Partial<UseMutationOptions<void, SynapseClientError, string>>): import("@tanstack/react-query").UseMutationResult<void, SynapseClientError, string, unknown>;
/**
 * Get the queryOptions to request list of Grid sessions. For an infinite query, use `useGetGridSessionsInfinite`
 * @param request
 * @param context
 */
export declare const getGridSessionsQuery: (request: ListGridSessionsRequest, context: {
    keyFactory: KeyFactory;
    synapseClient: SynapseClient;
}) => import("@tanstack/query-core").OmitKeyof<UseQueryOptions<ListGridSessionsResponse, Error, ListGridSessionsResponse, readonly unknown[]>, "queryFn"> & {
    queryFn?: import("@tanstack/query-core").QueryFunction<ListGridSessionsResponse, readonly unknown[], never> | undefined;
} & {
    queryKey: readonly unknown[] & {
        [dataTagSymbol]: ListGridSessionsResponse;
        [dataTagErrorSymbol]: Error;
    };
};
export declare function useGetGridSessionsInfinite<TData = InfiniteData<ListGridSessionsResponse>>(request: Omit<ListGridSessionsRequest, 'nextPageToken'>, options?: Partial<UseInfiniteQueryOptions<ListGridSessionsResponse, SynapseClientError, TData, QueryKey, ListGridSessionsResponse['nextPageToken']>>): import("@tanstack/react-query").UseInfiniteQueryResult<TData, SynapseClientError>;
export declare function useGetGridSession<TData = GridSession>(sessionId: string, options?: Partial<UseQueryOptions<GridSession, SynapseClientError, TData>>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/query-core").NoInfer<TData>, SynapseClientError>;
export declare const useCreateGridSession: (options?: Partial<UseMutationOptions<CreateGridResponse, SynapseClientError, CreateGridRequest>>) => import("@tanstack/react-query").UseMutationResult<CreateGridResponse, SynapseClientError, CreateGridRequest, unknown>;
/**
 * Synchronization is a two-phase process that ensures consistency between the user's local
 * changes and external changes made to the source:
 *
 * Phase 1: Schema Synchronization
 * - Synchronizes column definitions between the grid copy and source
 * - Resolves schema conflicts
 *
 * Phase 2: Row Synchronization
 * - Synchronizes row data using the final schema from Phase 1
 * - Merges cell-level changes when rows conflict
 * - Pushes user changes from copy to source
 * - Pulls external changes from source to copy
 *
 * @see {@link https://rest-docs.synapse.org/rest/POST/grid/synchronize/async/start.html}
 * @see {@link https://rest-docs.synapse.org/rest/GET/grid/synchronize/async/get/asyncToken.html}
 */
export declare function useSynchronizeGridSession(options?: Omit<UseMutationOptions<SynchronizeGridResponse, SynapseClientError, Omit<SynchronizeGridRequest, 'concreteType'>>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<SynchronizeGridResponse, SynapseClientError, Omit<SynchronizeGridRequest, "concreteType">, unknown>;
//# sourceMappingURL=useGridSession.d.ts.map