/*
 * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3 as published by
 * the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import React from 'react';
import { ElasticParams, Filter, MediaItem, SearchResult } from '../../models/Search';
import { CheckedFilter } from '../Search/utils';
import LookupTable from '../../models/LookupTable';
import { AllItemActions } from '../../models/Item';
import { ContextMenuOption } from '../ContextMenu';
import ApiResponse from '../../models/ApiResponse';
export interface SearchUIProps {
  selectedPath: string;
  selected: string[];
  selectionOptions: ContextMenuOption[];
  guestBase: string;
  sortBy?: string;
  sortOrder?: string;
  keyword: string;
  mode: 'select' | 'default';
  drawerOpen: boolean;
  embedded: boolean;
  desktopScreen: boolean;
  currentView: 'grid' | 'list';
  searchResults: SearchResult;
  areAllSelected: boolean;
  checkedFilters: LookupTable<CheckedFilter>;
  searchParameters: ElasticParams;
  error: ApiResponse;
  isFetching: boolean;
  onActionClicked(option: AllItemActions, event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void;
  handleSelectAll(checked: any): void;
  onSelectedPathChanges(path: string): void;
  onCheckedFiltersChanges(checkedFilters: LookupTable<CheckedFilter>): any;
  clearFilter(facet: string): void;
  clearFilters(): void;
  handleSearchKeyword(keyword: string): void;
  handleChangeView(): void;
  toggleDrawer(): void;
  handleFilterChange(filter: Filter, isFilter?: boolean): void;
  handleChangePage(event: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, newPage: number): void;
  handleChangeRowsPerPage(event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>): void;
  handleSelect(path: string, isSelected: boolean): void;
  onPreview(item: MediaItem): void;
  onHeaderButtonClick(event: any, item: MediaItem): void;
  handleClearSelected(): void;
  onClose(): void;
  onAcceptSelection?(items: string[]): void;
}
export declare function SearchUI(props: SearchUIProps): React.JSX.Element;
export default SearchUI;
