import React, { Component } from 'react';
import { StyleProp, TextStyle, ViewStyle } from 'react-native';
import { SearchBarProps } from './SearchBar';
export interface SearchModalResult {
    title: string;
    query: string;
    [key: string]: any;
}
export interface SearchModalProps {
    visible: boolean;
    onClose: () => void;
    onResultPress?: (result: SearchModalResult) => void;
    onInputChange?: (value: string) => void;
    onInputSubmit?: (value: string) => void;
    renderResultItem?: (result: SearchModalResult, index: number, inputValue: string) => React.ReactNode;
    searchBarProps?: SearchBarProps;
    results?: SearchModalResult[];
    itemStyle?: StyleProp<ViewStyle>;
    itemTextStyle?: StyleProp<TextStyle>;
}
export interface SearchModalState {
    history: SearchModalResult[];
    inputValue: string;
}
export declare class SearchModal extends Component<SearchModalProps, SearchModalState> {
    searchBar: any;
    constructor(props: SearchModalProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: SearchModalProps): void;
    loadHistoryToState: () => void;
    getSearchBarRef: (ref: any) => void;
    getHistory: () => Promise<SearchModalResult[]>;
    addToHistory: (item: SearchModalResult) => Promise<SearchModalResult[]>;
    handleResultPress: (result: SearchModalResult) => () => void;
    handleSubmit: (value: string) => void;
    clearHistory: () => Promise<void>;
    renderHistory: () => JSX.Element | null;
    renderResult: () => JSX.Element | null;
    renderItem: (item: SearchModalResult, i: number) => {} | null | undefined;
    renderTextWithHighLighs: (name: string | undefined, query: string) => JSX.Element;
    handleChange: (value: string) => void;
    renderSearchBar: () => JSX.Element;
    render(): JSX.Element;
}
