import React, { PropsWithChildren } from 'react';
import type { CommandResponse, UserResponse } from 'stream-chat';
import type { AutoCompleteSuggestionHeaderProps } from '../../components/AutoCompleteInput/AutoCompleteSuggestionHeader';
import type { AutoCompleteSuggestionItemProps } from '../../components/AutoCompleteInput/AutoCompleteSuggestionItem';
import type { AutoCompleteSuggestionListProps } from '../../components/AutoCompleteInput/AutoCompleteSuggestionList';
import type { Emoji } from '../../emoji-data';
export type SuggestionComponentType = 'command' | 'emoji' | 'mention';
export declare const isSuggestionCommand: (suggestion: Suggestion) => suggestion is SuggestionCommand;
export declare const isSuggestionEmoji: (suggestion: Suggestion) => suggestion is Emoji;
export declare const isSuggestionUser: (suggestion: Suggestion) => suggestion is SuggestionUser;
export type Suggestion = Emoji | SuggestionCommand | SuggestionUser;
export type SuggestionCommand = CommandResponse;
export type SuggestionUser = UserResponse;
export type Suggestions = {
    data: Suggestion[];
    onSelect: (item: Suggestion) => void;
    queryText?: string;
};
export type SuggestionsContextValue = {
    AutoCompleteSuggestionHeader: React.ComponentType<AutoCompleteSuggestionHeaderProps>;
    AutoCompleteSuggestionItem: React.ComponentType<AutoCompleteSuggestionItemProps>;
    AutoCompleteSuggestionList: React.ComponentType<AutoCompleteSuggestionListProps>;
    /** Override handler for closing suggestions (mentions, command autocomplete etc) */
    closeSuggestions: () => void;
    /**
     * Override handler for opening suggestions (mentions, command autocomplete etc)
     *
     * @param component {Component|element} UI Component for suggestion item.
     * @overrideType Function
     */
    openSuggestions: (component: SuggestionComponentType) => Promise<void>;
    suggestions: Suggestions;
    triggerType: SuggestionComponentType;
    /**
     * Override handler for updating suggestions (mentions, command autocomplete etc)
     *
     * @param newSuggestions {Component|element} UI Component for suggestion item.
     * @overrideType Function
     */
    updateSuggestions: (newSuggestions: Suggestions) => void;
    queryText?: string;
    suggestionsViewActive?: boolean;
};
export declare const SuggestionsContext: React.Context<SuggestionsContextValue>;
/**
 * This provider component exposes the properties stored within the SuggestionsContext.
 */
export declare const SuggestionsProvider: ({ children, value, }: PropsWithChildren<{
    value?: Partial<SuggestionsContextValue>;
}>) => React.JSX.Element;
export declare const useSuggestionsContext: () => SuggestionsContextValue;
//# sourceMappingURL=SuggestionsContext.d.ts.map