import { Observable } from 'rxjs';
import { IDeliveryClientConfig } from '../../config';
import { ContentItem, ItemResponses, SortOrder } from '../../models';
import { QueryService } from '../../services';
import { BaseItemQuery } from './base-item-query.class';
export declare class MultipleItemQuery<TItem extends ContentItem> extends BaseItemQuery<TItem, ItemResponses.DeliveryItemListingResponse<TItem>> {
    protected config: IDeliveryClientConfig;
    protected queryService: QueryService;
    constructor(config: IDeliveryClientConfig, queryService: QueryService);
    /**
     * Gets only item of given type
     * @param type Codename of type to get
     */
    type(type: string): this;
    /**
     * Gets items of given types (logical or)
     * I.e. get items of either 'Actor' or 'Movie' type
     * @param types Types to get
     */
    types(types: string[]): this;
    /**
     * Equals filter condition
     * @param field Element to filter. Example: 'elements.movie'
     * @param value Value to match. Example: 'Kingsman'
     */
    equalsFilter(field: string, value: string): this;
    /**
     * All filter
     * @param field Element to filter.
     * @param values Values
     */
    allFilter(field: string, values: string[]): this;
    /**
     * Any filter
     * @param field Element to filter.
     * @param values Values
     */
    anyFilter(field: string, values: string[]): this;
    /**
     * Contains filter
     * @param field Element to filter.
     * @param values Values
     */
    containsFilter(field: string, values: string[]): this;
    /**
     * Greater then filter
     * @param field Element to filter.
     * @param value Value
     */
    greaterThanFilter(field: string, value: string): this;
    /**
     * Greater then or equals filter
     * @param field Element to filter.
     * @param value Value
     */
    greaterThanOrEqualFilter(field: string, value: string): this;
    /**
     * In filter
     * @param field Element to filter.
     * @param values Values
     */
    inFilter(field: string, values: string[]): this;
    /**
     * Less then filter
     * @param field Element to filter.
     * @param value Value
     */
    lessThanFilter(field: string, value: string): this;
    /**
     * @param field Element to filter.
     * @param value Value
     */
    lessThanOrEqualFilter(field: string, value: string): this;
    /**
     * @param field Element to filter.
     * @param lowerValue Lower value of range (e.g. 2)
     * @param higherValue Higher value of range (e.g. 10)
     */
    rangeFilter(field: string, lowerValue: number, higherValue: number): this;
    /**
     * Limits the number of items returned by query
     * @param limit Number of items to load
     */
    limitParameter(limit: number): this;
    /**
     * Orders query based on given field and sort order
     * @param field Element by which to order
     * @param sortOrder Asc/Desc order type
     */
    orderParameter(field: string, sortOrder: SortOrder): this;
    /**
     * Skips the selected number of items
     * @param skip Number of items to skip
     */
    skipParameter(skip: number): this;
    /**
     * Gets the runnable Observable
     */
    getObservable(): Observable<ItemResponses.DeliveryItemListingResponse<TItem>>;
    /**
     * Gets 'Url' representation of query
     */
    getUrl(): string;
    /**
    * Inject a http body response to bypass the inbuilt http client
    * @param body Raw body response of external Kentico Cloud request
    */
    injectMultipleItems(body: string): ItemResponses.DeliveryItemListingResponse<TItem>;
}
