import { Component } from 'react';
import PropTypes from 'prop-types';
import { Query } from './query';
export { Query, AST as Ast } from './query';
export declare const QueryType: PropTypes.Requireable<string | Query>;
export declare const SearchBarPropTypes: {
    /**
     (query?: Query, queryText: string, error?: string) => void
     */
    onChange: PropTypes.Validator<(...args: any[]) => any>;
    /**
     The initial query the bar will hold when first mounted
     */
    defaultQuery: PropTypes.Requireable<string | Query>;
    /**
     If you wish to use the search bar as a controlled component, continuously pass the query
     via this prop
     */
    query: PropTypes.Requireable<string | Query>;
    /**
     Configures the search box. Set `placeholder` to change the placeholder text in the box and
     `incremental` to support incremental (as you type) search.
     */
    box: PropTypes.Requireable<PropTypes.InferProps<{
        placeholder: PropTypes.Requireable<string>;
        incremental: PropTypes.Requireable<boolean>;
        schema: PropTypes.Requireable<PropTypes.InferProps<{
            strict: PropTypes.Requireable<boolean>;
            fields: PropTypes.Requireable<object>;
            flags: PropTypes.Requireable<string[]>;
        }>>;
    }>>;
    /**
     An array of search filters.
     */
    filters: PropTypes.Requireable<PropTypes.InferProps<{
        type: any;
        field: PropTypes.Validator<string>;
        name: PropTypes.Validator<string>;
        negatedName: PropTypes.Requireable<string>;
        available: PropTypes.Requireable<(...args: any[]) => any>;
    }>[]>;
    /**
     * Tools which go to the left of the search bar.
     */
    toolsLeft: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    /**
     * Tools which go to the right of the search bar.
     */
    toolsRight: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    /**
     * Date formatter to use when parsing date values
     */
    dateFormat: PropTypes.Requireable<object>;
};
export declare class SoftSearchBar extends Component<{
    defaultQuery?: any;
    box?: any;
    filters?: any;
    toolsLeft?: any;
    toolsRight?: any;
    onChange?: any;
}> {
    static propTypes: {
        /**
         (query?: Query, queryText: string, error?: string) => void
         */
        onChange: PropTypes.Validator<(...args: any[]) => any>;
        /**
         The initial query the bar will hold when first mounted
         */
        defaultQuery: PropTypes.Requireable<string | Query>;
        /**
         If you wish to use the search bar as a controlled component, continuously pass the query
         via this prop
         */
        query: PropTypes.Requireable<string | Query>;
        /**
         Configures the search box. Set `placeholder` to change the placeholder text in the box and
         `incremental` to support incremental (as you type) search.
         */
        box: PropTypes.Requireable<PropTypes.InferProps<{
            placeholder: PropTypes.Requireable<string>;
            incremental: PropTypes.Requireable<boolean>;
            schema: PropTypes.Requireable<PropTypes.InferProps<{
                strict: PropTypes.Requireable<boolean>;
                fields: PropTypes.Requireable<object>;
                flags: PropTypes.Requireable<string[]>;
            }>>;
        }>>;
        /**
         An array of search filters.
         */
        filters: PropTypes.Requireable<PropTypes.InferProps<{
            type: any;
            field: PropTypes.Validator<string>;
            name: PropTypes.Validator<string>;
            negatedName: PropTypes.Requireable<string>;
            available: PropTypes.Requireable<(...args: any[]) => any>;
        }>[]>;
        /**
         * Tools which go to the left of the search bar.
         */
        toolsLeft: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Tools which go to the right of the search bar.
         */
        toolsRight: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * Date formatter to use when parsing date values
         */
        dateFormat: PropTypes.Requireable<object>;
    };
    static Query: typeof Query;
    state: {
        query: any;
        queryText: string;
        error: any;
    };
    constructor(props: any);
    static getDerivedStateFromProps(nextProps: any, prevState: any): {
        query: any;
        queryText: any;
        error: any;
    };
    notifyControllingParent(newState: any): void;
    onSearch: (queryText: any) => void;
    onFiltersChange: (query: any) => void;
    renderTools(tools: any): JSX.Element | JSX.Element[];
    render(): JSX.Element;
}
