/**
 * Created by hubert on 8/06/17.
 */
import "polymer/polymer-element.html";
import "iron-flex-layout/iron-flex-layout.html";
import "ozone-item-preview";
import "ozone-api-item";
import "ozone-collection";
import "./ozone-mosaic.html";
import 'ozone-iron-list';
import { OzoneIronList } from 'ozone-iron-list';
import { Item, SearchRequest } from 'ozone-type';
import { SearchQuery } from "ozone-search-helper";
/**
 * `TaktikSearchApiBehavior` defines standard behavior for search modules compatible with *taktik-free-text-search*.
 *
 * @polymerMixin
 */
export interface TaktikSearchApiBehavior {
    /**
     * searchString string for search query.
     */
    searchString: string;
    /**
     * Array of search results
     */
    searchResults: Array<any>;
}
/**
 * <ozone-mosaic> is an element that display ozone items in a mosaic view.
 *
 * ```html
 * <ozone-mosaic item-data={{item}}>  </ozone-mosaic>
 * ```
 *
 *  ### Events
 *
 * * *results-found* Fired when results are found by the API.
 *
 * ### Implements
 *
 *  *TaktikSearchApiBehavior*
 *
 *  ### Mixin
 *  Custom property | Description | Default
 *  ----------------|-------------|----------
 *  `--ozone-mosaic-item`  | css mixin for the list of item | `{ box-sizing: border-box;width:300px;height:200px;margin:10px;display:flex;overflow: hidden;}`
 *  `--ozone-mosaic-item-margins` | css mixin for the margin of previewContainer | `default 8px`
 */
export declare class OzoneMosaic extends Polymer.Element implements TaktikSearchApiBehavior {
    $: {
        resultList: HTMLElement;
        ironList: OzoneIronList;
    } | any;
    /**
     * id of the source
     */
    searchResults: Array<Item>;
    /**
     * string to search in the collection
     */
    searchString: string;
    /**
     * total number of items found with the search
     */
    total?: number;
    /**
     * true indicate that all the data data still available with this search.
     */
    hasMoreData: boolean;
    /**
     * Define size of query result
     * @type {number}
     */
    searchSize: number;
    /**
     * type of the collection
     */
    collectionType: string;
    private _scrollTrigger;
    /**
     * scrollthreshold in percent to trigger loading of more items
     * @type {number}
     */
    scrollthresholdPc: number;
    private _collectionTypeChange;
    private clearTriggers;
    ready(): void;
    /**
     * trigger quickSearch in the collection
     * @param searchString
     */
    searchInItems(searchString?: string): any;
    /**
     * start a new search base on -searchString-.
     */
    requestSearch(): void;
    /**
     * Save given item.
     * @param {Item} updatedData
     * @return {Promise<Item>}
     */
    saveSelectedItem(updatedData?: Item): Promise<Item>;
    /**
     * perform a custom search
     * @param {SearchRequest} requestQuery
     * @return {Promise<Array<Item>>}
     */
    customSearchQuery(requestQuery: SearchRequest): any;
    /**
     * start search query
     * @param {SearchQuery} searchRequest
     * @return {Promise<Array<Item>>}
     */
    search(searchRequest: SearchQuery): any;
    /**
     * empty collection
     */
    clear(): any;
}
