import { DocumentNode } from 'graphql'; import { Product, Collection, QueryFunction } from '../types'; import { SearchQueryResult } from './searchQuery'; /** * API */ export interface UseSearchQueries { SEARCH_QUERY: string | DocumentNode; } export interface UseSearchConfig { collections: boolean; products: boolean; pageSize: number; memoize: boolean; debounce: number; } interface UseSearchArguments { query: QueryFunction; config?: Partial; queries?: Partial; } export interface UseSearchValues extends Pick { search: (searchTerm?: string) => Promise; setSearchTerm: (searchTerm?: string) => void; reset: () => void; } /** * State */ export interface SearchState { loading: boolean; products: Product[]; collections: Collection[]; results: SearchQueryResult[]; config: UseSearchConfig; searchTerm: string; hasMoreResults: boolean; stale: boolean; lastSearchTerm: string | void; } /** * useSearch */ export declare const useSearch: ({ query: userQueryFunction, config: userConfig, queries, }: UseSearchArguments) => UseSearchValues; export {};