import { UniqueFacetIdentifier } from '@/utils/types';
import { QueryBundleRequest, QueryFilter } from '@sage-bionetworks/synapse-types';
import * as React from 'react';
export type QueryChangeCommitOptions = {
    debounce: true;
} | {
    noCommit: true;
};
export type TableQueryReducerState = {
    currentQueryRequest: QueryBundleRequest;
    nextQueryRequest: QueryBundleRequest;
    isConfirmingChange: boolean;
};
export type TableQueryReducerAction = {
    commitOptions?: QueryChangeCommitOptions;
} & ({
    type: 'setQuery';
    queryOrUpdater: React.SetStateAction<QueryBundleRequest>;
} | {
    type: 'addValueToSelectedFacet';
    facet: UniqueFacetIdentifier;
    value: string;
} | {
    type: 'removeSelectedFacet';
    facetsToRemove: UniqueFacetIdentifier | UniqueFacetIdentifier[];
} | {
    type: 'setRangeFacetValue';
    facet: UniqueFacetIdentifier;
    min?: string;
    max?: string;
} | {
    type: 'removeValueFromSelectedFacet';
    facet: UniqueFacetIdentifier;
    value: string;
} | {
    type: 'setPageSize';
    pageSize: number;
} | {
    type: 'goToPage';
    pageNumber: number;
} | {
    type: 'resetQuery';
} | {
    type: 'removeQueryFilter';
    queryFilter: QueryFilter;
} | {
    type: 'removeValueFromQueryFilter';
    queryFilter: QueryFilter;
    value: string;
} | {
    type: 'resetUncommittedChanges';
} | {
    type: 'commitChanges';
} | {
    type: 'confirmChanges';
} | {
    type: 'cancelChanges';
} | {
    type: 'resetDebounce';
});
/**
 * Utility hook that internally uses a reducer to manage the state of a table query.
 * @param initQueryRequest
 * @param requireConfirmationOnChange
 * @param onQueryChange
 */
export declare function useTableQueryReducer(initQueryRequest: QueryBundleRequest, requireConfirmationOnChange: boolean, onQueryChange?: (queryJsonString: string) => void): {
    currentQueryRequest: QueryBundleRequest;
    nextQueryRequest: QueryBundleRequest;
    isConfirmingChange: boolean;
    dispatch: React.ActionDispatch<[action: TableQueryReducerAction]>;
};
//# sourceMappingURL=useTableQueryReducer.d.ts.map